1 回答

TA贡献1824条经验 获得超5个赞
来自关于常量的 Go :
数字常量存在于任意精度的数字空间中;它们只是普通数字。但是,当将它们分配给变量时,该值必须能够适合目标。
一个例子可能会让这一点更清楚:
const f = 1 << 31
x := f / 10 // what type is x?
y := f * 0.1 // what type is y?
fmt.Printf(" 10 : type = %8T\n", 10) // int
fmt.Printf("0.1 : type = %8T\n\n", 0.1) // float64
fmt.Printf(" x : type = %8T value = %v\n", x, x)
fmt.Printf(" y : type = %8T value = %v\n", y, y)
游乐场输出:
10 : type = int
0.1 : type = float64
x : type = int value = 214748364
y : type = float64 value = 2.147483648e+08
x
是 anint
因为 devisor10
被解释为 anint
。y
是 afloat64
因为乘数0.1
被解释为 afloat64
。
在游览示例中,const 是1<<100
,它太大而无法放入int
(32 位),因此程序甚至无法编译,因为该数字无法存储到分配的内存类型中:100 位无法放入32 位int
.
- 1 回答
- 0 关注
- 172 浏览
添加回答
举报