我有一个结构,我打算用数据库记录填充,其中一个日期时间列可以为空:
type Reminder struct {
Id int
CreatedAt time.Time
RemindedAt *time.Time
SenderId int
ReceiverId int
}
Run Code Online (Sandbox Code Playgroud)
既然指针可以nil,我已经做RemindedAt了一个指针,但这需要代码知道At变量之间的区别.有更优雅的方式来处理这个问题吗?
我在Mac OS X 10.8.2上使用Go 1.0.3,我正在试验json包,尝试将结构封送到json,但我不断得到一个空的{}json对象.
该err值是零,所以没有什么根据的是错误的json.Marshal功能,并且该结构是正确的.为什么会这样?
package main
import (
"encoding/json"
"fmt"
)
type Address struct {
street string
extended string
city string
state string
zip string
}
type Name struct {
first string
middle string
last string
}
type Person struct {
name Name
age int
address Address
phone string
}
func main() {
myname := Name{"Alfred", "H", "Eigenface"}
myaddr := Address{"42 Place Rd", "Unit 2i", "Placeton", "ST", "00921"}
me := …Run Code Online (Sandbox Code Playgroud) 我在SQL Server 2008中有一个表变量
DECLARE @specsAndModel TABLE
(
specName VARCHAR(50)
,specVal VARCHAR(50)
)
INSERT INTO @specsAndModel
VALUES('[modelNumber]', 'F00-B4R')
Run Code Online (Sandbox Code Playgroud)
然后,我稍后构建一个名为的字符串@query,我最终尝试将其传入EXECUTE,如下例所示:
DECLARE @query NVARCHAR(MAX);
SET @query = 'SELECT specName, specVal FROM @specsAndModel'
EXECUTE(@query)
Run Code Online (Sandbox Code Playgroud)
但是,SQL Server给我错误消息: Must declare the table variable "@specsAndModel".
搜索后,我认为这可能与执行上下文有关,但我无法解决问题.
我是否可以在对execute函数的调用中使用表变量?
我想先显示图形而不先写文件.
假设我有一个命令foo在标准输出上产生这个:
digraph foogrph {
a -> b;
a -> c;
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是管道foo输入dot然后将结果传递到一个命令,该命令将在图形环境中显示图像.
foo | dot -Tpng | <display command>
Run Code Online (Sandbox Code Playgroud)
我找到了一个涉及临时文件的解决方法.在OSX中,我可以执行以下操作:
foo | dot -Tpng > temp && open temp
Run Code Online (Sandbox Code Playgroud)
但我仍然需要从文件系统中删除该文件.
如何显示正在写入标准的图像?
我有mathematica代码来检查集合集是否满足拓扑的定义,我现在想以编程方式生成这样的图:

如何才能做到这一点?
我count-change在SICP中修改了函数的代码,以便在函数recurses时显示一对.该对是形式"(cc a k)" -> "(cc a (- k 1))"或"(cc a k)" -> "(cc (- a (d k)) k)",我的目标是建立一个DOT文件,以使用GraphViz显示树递归.
这是一个示例图像,由以下代码生成:

这是方案代码:
; Count Change
(define (count-change amount)
(cc amount 5))
(define (cc amount kinds-of-coins)
(begin
(cond ((= amount 0) 1)
((or (< amount 0) (= kinds-of-coins 0)) 0)
(else (+
(begin
(display "\"")
(display `(cc ,amount ,kinds-of-coins))
(display "\"")
(display " -> ")
(display "\"")
(display `(cc ,amount ,(- kinds-of-coins 1)))
(display "\"")
(display "\n") …Run Code Online (Sandbox Code Playgroud) 我在StackOverflow和Google中搜索但找不到确切的答案,所以我想问一个单独的问题.
通常我们可以通过git log获取提交图.我使用以下命令以一种奇特的方式查看提交图.
git log --graph --all --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
Run Code Online (Sandbox Code Playgroud)
我得到的图表如下:

在日志图中,您可以看到所有分支的指针,但是无法查看最初在哪个分支中创建的提交.
但在Atlassian Fisheye中,日志图中的列显示了分支,而提交位于这些列中.您可以知道每个提交的分支.当您想要在合并和不同分支的提交期间跟踪问题时,这非常有用.

有没有办法在命令行中有这样的日志图?是否可以像Fisheye一样用分支分隔图形线?如果无法在命令行中使用它,您是否知道任何具有"逐个分支"功能的客户端应用程序,如Fisheye所做的那样?
在vim中,我可以通过运行:buffers命令显示所有打开的缓冲区,但是,有时列表可能会变长,有没有办法将输出限制为仅匹配模式的文件名?
例如:

我怎么只显示*.c文件?
我有一个宏,它获取整数的第J位:
#define TWO_TO_THE(POWER) (1 << POWER)
#define JTH_BIT(BITS, J) ((TWO_TO_THE((J-1)) & BITS) != 0)
Run Code Online (Sandbox Code Playgroud)
但是,我不能通过发出命令从gdb中使用它,print JTH_BIT(i,j)在调试时是否可以使用C中的宏?
我想出了一个Group的类型类定义,但是我找到了一个实际上并不是一个组的反例类型.
这是类定义和一个实例,即组ℤ2:
class Group g where
iden :: g
op :: g -> g -> g
inv :: g -> g
data Z2T = Z0 | Z1
instance Group Z2T where
iden = Z0
Z0 `op` Z0 = Z0
Z0 `op` Z1 = Z1
Z1 `op` Z0 = Z1
Z1 `op` Z1 = Z0
inv Z0 = Z1
inv Z1 = Z0
Run Code Online (Sandbox Code Playgroud)
但是,那些类型的签名Group是必要的,但不足以使一个类型真正成为一个组,这是我的反例编译:
data NotAGroup = N0 | N1
instance Group NotAGroup where
iden = N0 …Run Code Online (Sandbox Code Playgroud)