在围棋文档说(强调):
使用时间的程序通常应存储并将它们作为值传递,而不是指针.也就是说,时间变量和结构字段的类型应为time.Time,而不是*time.Time.时间值可以由多个goroutine同时使用.
最后一句(关于在多个goroutine中同时使用Time值)是它们"通常"存储并作为值而不是指针传递的唯一原因吗?这对其他结构也是常见的吗?我尝试在time.Time声明和方法中寻找专门启用它的任何逻辑,但没有注意到那里有什么特别之处.
更新:我经常需要为我的结构提供JSON表示,而我宁愿省略空/未初始化的时间.该json:",omitempty"标签不符合了time.time值,工作似乎是预期的行为,但最好的解决方法似乎是使用一个指针,不利于在上面引述的文档的建议.
对于许多简单的值来说,它很常见.
在Go中,当某个值不大于一个或两个单词时,通常只需将其用作值而不是使用指针.只是因为没有理由使用指针,如果对象很小而你没有通过它来进行更改.
您可能不得不忘记语言的实践,其中所有结构化都不能作为值处理.你可能很自然地使用整数或浮点数作为值,而不是指针.为什么不这样做呢?
关于你对JSON的精确问题,并假设你不想为此编写一个特定的Marshaller,使用a没有问题*time.Time.事实上,golang-nuts列表中已经提到了这个问题.
| 归档时间: |
|
| 查看次数: |
3269 次 |
| 最近记录: |