首页 > 后端开发 > Golang > Go 的 `time.Time`:为什么比较时间时 `==` 有时会失败?

Go 的 `time.Time`:为什么比较时间时 `==` 有时会失败?

Mary-Kate Olsen
发布: 2024-12-27 02:12:22
原创
489 人浏览过

Go's `time.Time`: Why Does `==` Sometimes Fail When Comparing Times?

比较时间结构:为什么差异与相等

Time.Time,Go 中的一个结构体,不仅包含时间分量(秒和纳秒),还包含位置指针。在通过 == 比较结构体实例时,所有字段都要经过检查。

Go 规范规定:

Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal.
登录后复制

因此,t1 == t2 比较所有字段,包括位置,其中是不同的指针。尽管两个位置代表相同的时区,但这种排他性仍然存在。

提醒一下,time.Time 文档警告不要在地图或数据库中使用时间值作为标识符,而不保证位置一致。解决方案在于使用 UTC 或 Local 方法来确保相同的位置指针。

或者,可以利用 In() 方法来建立所需的位置指针,如 GoSpec 中所示。

通过设置等效的位置指针,具有相同日期和时间组件的时间结构现在在通过 == 进行比较时将产生 true。然而,无论位置如何,Equal() 方法都会始终返回 true。

以上是Go 的 `time.Time`:为什么比较时间时 `==` 有时会失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板