在 Go Tour基础知识片段 #13中,呈现以下内容:
MaxInt uint64 = 1<<64 - 1
当示例运行时,它会正确评估;我似乎无法理解为什么。
unit64
int
据我所知,是围棋中最大的容器。
同时在1<<64
表达式(例如 in fmt.Printf(1<<64)
)中使用时会评估为异常 - 也就是说,它0
与其他几种编程语言不同。
尽管如此,当在赋值运算符的右侧使用时,它的评估效果很好。
我在这里想念什么?
在 Go Tour基础知识片段 #13中,呈现以下内容:
MaxInt uint64 = 1<<64 - 1
当示例运行时,它会正确评估;我似乎无法理解为什么。
unit64
int
据我所知,是围棋中最大的容器。
同时在1<<64
表达式(例如 in fmt.Printf(1<<64)
)中使用时会评估为异常 - 也就是说,它0
与其他几种编程语言不同。
尽管如此,当在赋值运算符的右侧使用时,它的评估效果很好。
我在这里想念什么?
没关系,幻灯片 #15似乎解释了它:它是一个常数,因此“没有限制大小”(无论如何都不是 64 位)。我觉得这很奇怪,但可以解释一下。