不明白为什么我能做到
const OK = uint64(0)
const OK = int(unsafe.Sizeof(uint64(0)))
但不是吗?
const NOK = binary.Size(uint64(0))
答案 0 :(得分:2)
在specification中解释了它。
包不安全在编译器中实现。表达式unsafe.Sizeof(uint64(0))
can be evaluated at compile time。这是constant expression。
在编译时无法评估函数普通函数调用binary.Size(uint64(0))
。它不是constant expression。