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