package main import "fmt" func main() { // code 1 var a uint = 0 var b uint = 1 fmt.Println(a - b) // code 2 //a := uint(0) - uint(1) //fmt.Println(a) }
result -> 18446744073709551615
package main import "fmt" func main() { // code 1 //var a uint = 0 //var b uint = 1 //fmt.Println(a - b) // code 2 a := uint(0) - uint(1) fmt.Println(a) }
result -> constant -1 overflows uint(panic)
原因是 在 var 賦值的時候 會做隱適類型 轉換 直接轉換為 有符號整型了
int 范圍 大小
int8. [-128, 127] int16. [-32768, 32767] int32. [-2147483648, 2147483647] int64. [-9223372036854775808, 9223372036854775807]
uint 范圍 大小
uint8. [0, 255] uint16. [0, 65535] uint32. [0, 4294967295] uint64. [0, 18446744073709551615]