The Go Programming Language Specification
Constants
An untyped constant has a default type which is the type to which the
constant is implicitly converted in contexts where a typed value is
required. The default type of an untyped constant is bool, rune, int,
float64, complex128 or string respectively, depending on whether it is
a boolean, rune, integer, floating-point, complex, or string constant.
func Println(a ...interface{}) (n int, err error)
fmt.Println(math.MaxUint32)
math.MaxUint32
is an untyped integer constant that defaults to type int
in this context, an untyped integer constant argument for a type interface{}
parameter.
int
is a signed 32- or 64-bit integer depending on the implementation.
const (
MaxInt32 = 1<<31 - 1
MaxUint32 = 1<<32 - 1
)
MaxUint32
is greater than MaxInt32
.
if you run go env
you should see that you are using a 32-bit architecture, for example, GOARCH="386"
.
Don't accept the default 32-bit int
type. Use a compatible type conversion. For example, write
fmt.Println(uint32(math.MaxUint32))