为了账号安全,请及时绑定邮箱和手机立即绑定

时间包“无秒()”函数

时间包“无秒()”函数

Go
慕尼黑的夜晚无繁华 2022-09-19 20:56:45
我对时间包函数操作感到困惑。它在时间 &纳秒掩码(即 1<<30-1 => 111111111111111111111111111111)的属性上应用运算符,以返回时间对象的纳秒值。我想知道数字等于数字(因为所有数字的值为1),那么他们为什么要这样做?nsec()ANDwallANDING1<<30-1func (t *Time) nsec() int32 {     return int32(t.wall & nsecMask) }主要源代码:https://cs.opensource.google/go/go/+/refs/tags/go1.16.7:src/time/time.go;l=164;drc=refs%2Ftags%2Fgo1.16.7
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

wall字段的类型为 uint64,它包含的不仅仅是纳秒:

// From high to low bit position, wall encodes a 1-bit flag (hasMonotonic),
// a 33-bit seconds field, and a 30-bit wall time nanoseconds field.

所以他们在这里做的是,他们正在提取最后30位来获得纳秒。


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信