# How to Get the Maximum Value for an Int Type in Go

Created
Modified

## Using constant values

Since integer types use two's complement arithmetic, you can infer the min/max constant values for int and uint. For example,

``````package main

import (
"fmt"
)

const MaxUint8 = ^uint8(0)
const MaxUint16 = ^uint16(0)
const MaxUint = ^uint(0)
const MinUint = 0
const MaxInt = int(MaxUint >> 1)
const MinInt = -MaxInt - 1

func main() {

fmt.Printf("uint8  %+v\n", MaxUint8)
fmt.Printf("uint16 %+v\n", MaxUint16)
fmt.Printf("uint64 %+v\n", MaxUint)
}``````
```uint8  255
uint16 65535
uint64 18446744073709551615```

The predeclared architecture-independent numeric types are:

``````uint8  (0 to 255)
uint16 (0 to 65535)
uint32 (0 to 4294967295)
uint64 (0
18446744073709551615)

int8   (-128 to 127)
int16  (-32768 to 32767)
int32  (-2147483648 to 2147483647)
int64  (-9223372036854775808
9223372036854775807)``````

## Using math Package

We can use math package for getting the maximal and minimal values for integers:

``````package main

import (
"fmt"
"math"
)

func main() {
// integer max
fmt.Printf("i64   = %+v\n", math.MaxInt64)
fmt.Printf("i32   = %+v\n", math.MaxInt32)
fmt.Printf("i16   = %+v\n", math.MaxInt16)

// integer min
fmt.Printf("i64   = %+v\n", math.MinInt64)
fmt.Printf("i32   = %+v\n", math.MinInt32)

fmt.Printf("f64 = %+v\n", math.MaxFloat64)
fmt.Printf("f32 = %+v\n", math.MaxFloat32)
}``````
```i64   = 9223372036854775807
i32   = 2147483647
i16   = 32767
i64   = -9223372036854775808
i32   = -2147483648
f64 = 1.7976931348623157e+308
f32 = 3.4028234663852886e+38```

You can see more int the math package. The constants defined in the math package:

``````// Mathematical constants:
const (
// 3.40282346638528859811704183484516925440e+38
MaxFloat32 = 0x1p127 * (1 + (1 - 0x1p-23))
// 1.401298464324817070923729583289916131280e-45
SmallestNonzeroFloat32 = 0x1p-126 * 0x1p-23

// 1.79769313486231570814527423731704356798070e+308
MaxFloat64 = 0x1p1023 * (1 + (1 - 0x1p-52))
// 4.9406564584124654417656879286822137236505980e-324
SmallestNonzeroFloat64 = 0x1p-1022 * 0x1p-52
)

// Integer limit values:
const (
MaxInt    = 1<<(intSize-1) - 1
MinInt    = -1 << (intSize - 1)
MaxInt8   = 1<<7 - 1
MinInt8   = -1 << 7
MaxInt16  = 1<<15 - 1
MinInt16  = -1 << 15
MaxInt32  = 1<<31 - 1
MinInt32  = -1 << 31
MaxInt64  = 1<<63 - 1
MinInt64  = -1 << 63
MaxUint   = 1<<intSize - 1
MaxUint8  = 1<<8 - 1
MaxUint16 = 1<<16 - 1
MaxUint32 = 1<<32 - 1
MaxUint64 = 1<<64 - 1
)``````

#### Related Tags

#get# #max# #int#