时间包“无秒()”函数

我对时间包函数操作感到困惑。它在时间 &纳秒掩码(即 1<<30-1 => 111111111111111111111111111111)的属性上应用运算符,以返回时间对象的纳秒值。我想知道数字等于数字(因为所有数字的值为1),那么他们为什么要这样做?nsec()ANDwallANDING1<<30-1

func (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


慕尼黑的夜晚无繁华
浏览 81回答 1
1回答

跃然一笑

wall字段的类型为 uint64,它包含的不仅仅是纳秒://&nbsp;From&nbsp;high&nbsp;to&nbsp;low&nbsp;bit&nbsp;position,&nbsp;wall&nbsp;encodes&nbsp;a&nbsp;1-bit&nbsp;flag&nbsp;(hasMonotonic), //&nbsp;a&nbsp;33-bit&nbsp;seconds&nbsp;field,&nbsp;and&nbsp;a&nbsp;30-bit&nbsp;wall&nbsp;time&nbsp;nanoseconds&nbsp;field.所以他们在这里做的是,他们正在提取最后30位来获得纳秒。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go