【发布时间】:2014-02-27 16:12:42
【问题描述】:
Go docs say(已添加重点):
使用时间的程序通常应该将它们作为值而不是指针进行存储和传递。也就是说,时间变量和结构字段的类型应该是 time.Time,而不是 *time.Time。一个 Time 值可以被多个 goroutine 同时使用。
最后一句话(关于同时在多个 goroutine 中使用 Time 值)是它们应该“通常”作为值而不是指针存储和传递的唯一原因吗?这对其他结构也很常见吗?我尝试在time.Time declaration and methods 中寻找任何专门启用此功能的逻辑,但没有注意到那里有什么特别之处。
更新:我经常需要为我的结构提供 JSON 表示,我宁愿省略空/未初始化的时间。 json:",omitempty" 标记不适用于 time.Time 值,appears to be the expected behavior,但最好的解决方法似乎是使用指针,这与上面引用的文档中的建议背道而驰。
【问题讨论】: