Go にはたくさんの数値型がある。
| 型 | 説明 |
| int8 | 8bit整数 |
| int16 | 16bit整数 |
| int32 | 32bit整数 |
| int64 | 64bit整数 |
| int | 32bitまたは64bit整数(処理系依存) |
| uint8 | 8bit符号なし整数 |
| byte | uint8の別名 |
| uint16 | 16bit符号なし整数 |
| uint32 | 32bit符号なし整数 |
| uint64 | 64bit符号なし整数 |
| uint | 32bitまたは64bit符号なし整数(処理系依存) |
| float32 | 32bit単精度浮動小数点数 |
| float64 | 64bit倍精度浮動小数点数 |
| complex64 | float32の実数部と虚数部をもつ複素数 |
| complex126 | float64の実数部と虚数部をもつ複素数 |
整数は通常10進数だけど、頭に 0 をつけると8進数、0x をつけると16進数と解釈される。
型が異なると計算できない。例えば同じ整数でも int と int64 の計算をしようとすると、次のようにエラーになる。
package main
import "fmt"
func main() {
var a int
var b int64
a = 10
b = 20
fmt.Println(a + b)
}
^o^ > go run numbers.go # command-line-arguments .\numbers.go:12: invalid operation: a + b (mismatched types int and int64)
こういう場合は明示的に変換しなければならない。
package main
import "fmt"
func main() {
var a int
var b int64
a = 10
b = 20
fmt.Println(int64(a) + b)
}
^o^ > go run numbers2.go 30