如何将指针"强制转换"回Golang中的值?

Dac*_*d3r 4 go

我正在使用time.Time作为我的一个结构中的指针.例如

type struct Example{
    CreatedDate *time.Time
}
Run Code Online (Sandbox Code Playgroud)

我正在使用指针,所以如果不存在日期,我可以将nil传递给结构.

然而,这确实存在问题,因为我需要使用time.Since(then)函数,它不接受指针作为参数,但需要时间.时间.

所以...

将"&"放在结构前面很容易,例如.&time.Time,但如果你有一个指针,你怎么能扭转它,回到例如.一种时间.时间?

例如.(不起作用,但可能会让你知道我的意思)

var t *time.Time = &time.Now()
var t2 time.Time = t.(time.Time)
Run Code Online (Sandbox Code Playgroud)

我希望你能提供帮助.这个问题感觉非常愚蠢,因为我在google搜索时找不到任何关于它的信息.我觉得我在这里错过了一些东西;-)

Not*_*fer 20

var t *time.Time = &time.Now()
var t2 time.Time = *t
Run Code Online (Sandbox Code Playgroud)

就像在C中一样,&意思是"地址"并指定一个标记为的指针*T.但*也意味着"值",或取消引用指针,并分配值.

这有点偏离主题,但IMO的这种双重用途*部分是因为C中的新手和朋友对指针感到困惑.

  • 很困惑,这导致我来到这里:P (4认同)