Go: Untyped numeric constants with no limits
Constants may be typed or untyped.
const a uint = 17
const b = 55
An untyped constant has no limits. When it's used in a context that requires a type, a type will be inferred and a limit applied.
// Too big for an int
const big = 10000000000
// Still ok: "untyped = untyped * untyped"
const bigger = big * 100
// No problem: Result fits in an int
var i int = big / 100
// Compile time error: "constant 10000000000 overflows int"
var j int = big
The inferred type is determined by the syntax of the value. 123 for instance gets type int and 123.4 becomes a float64. The other possibilities are rune (alias for int32) and complex128.
Enumerations
Go does not have enumerated types. Instead, you can use the special name iota in a single const declaration to get a series of increasing values. When an initialization expression is omitted for a const, it reuses the preceding expression.
const (
red = iota // red == 0
blue // blue == 1
green // green == 2
)
The article Define an enumeration (enum) with a string representation has a detailed example.
Comments
Be the first to comment!