這是去游樂場的鏈接package mainimport "fmt"import "math"func main() { fmt.Println("Hello, playground") fmt.Println(math.MaxUint32)}上面的代碼似乎導致constant 4294967295 overflows int是否會fmt.Println自動將每個數字轉換為 int?
1 回答

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
無類型常量具有默認類型,該類型是在需要類型值的上下文中將常量隱式轉換為的類型。無類型常量的默認類型分別是 bool、rune、int、float64、complex128 或 string,具體取決于它是 boolean、rune、integer、浮點、complex 或 string 常量。
func Println(a ...interface{}) (n int, err error)
fmt.Println(math.MaxUint32)
math.MaxUint32是int在此上下文中默認為類型的無類型整數常量,是類型interface{}參數的無類型整數常量參數。
int 是有符號的 32 位或 64 位整數,具體取決于實現。
const (
MaxInt32 = 1<<31 - 1
MaxUint32 = 1<<32 - 1
)
MaxUint32大于MaxInt32。
如果您運行,go env您應該看到您使用的是 32 位架構,例如,GOARCH="386".
不要接受默認的 32 位int類型。使用兼容的類型轉換。例如,寫
fmt.Println(uint32(math.MaxUint32))
- 1 回答
- 0 關注
- 278 瀏覽
添加回答
舉報
0/150
提交
取消