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 關注
- 167 瀏覽
添加回答
舉報
