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
被解釋為 an?int
。y
是 afloat64
因為乘數0.1
被解釋為 a?float64
。
在游覽示例中,const 是1<<100
,它太大而無法放入int
(32 位),因此程序甚至無法編譯,因為該數字無法存儲到分配的內存類型中:100 位無法放入32 位int
.
- 1 回答
- 0 關注
- 158 瀏覽
添加回答
舉報