iota: miminalist constants

yourbasic.org/golang

The iota identifier is a tool for enumerating constants.

Basics

The predeclared iota identifier resets to 0 whenever the word const appears in the source code and increments after each const specification.

const (
    C0 = iota
    C1 = iota
    C2 = iota
)
fmt.Println(C0, C1, C2) // "0 1 2"

This can be simplified to

const (
	C0 = iota
	C1
	C2
)

In a parenthesized const declaration expressions can be implicitly repeated—this indicates a repetition of the preceding expression.

Start at one

const (
    C1 = iota + 1
    C2
    C3
)
fmt.Println(C1, C2, C3) // "1 2 3"

Skip value

const (
    C1 = iota + 1
    _
    C3
    C4
)
fmt.Println(C1, C3, C4) // "1 3 4"

Enumeration

type Suite int

const (
	Spades Suite = iota
	Hearts
	Diamonds
	Clubs
)

func (s Suite) String() string {
	return [...]string{"Spades", "Hearts", "Diamonds", "Clubs"}[s]
}

See Define an enumeration with a string representation for more details on how to create and use enumerations in Go.