Golang const unsafe.Sizeof

时间:2018-04-01 01:00:02

标签: go

不明白为什么我能做到

const OK = uint64(0)

const OK = int(unsafe.Sizeof(uint64(0)))

但不是吗?

const NOK = binary.Size(uint64(0))

1 个答案:

答案 0 :(得分:2)

specification中解释了它。

包不安全在编译器中实现。表达式unsafe.Sizeof(uint64(0)) can be evaluated at compile time。这是constant expression

在编译时无法评估函数普通函数调用binary.Size(uint64(0))。它不是constant expression

Constant declarations require a constant expression