我对时间包函数操作感到困惑。它在时间 &纳秒掩码(即 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位来获得纳秒。
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报
0/150
提交
取消