If you’ve worked in Go, you’ve likely seen iota. Here’s how the Go docs explain it:
Within a constant declaration, the predeclared identifier
– The Go Docsiotarepresents successive untyped integer constants.
That sort of makes sense, but let me put it into plain English.
– Me
iotais used when declaring a list of constants, and assigns each constant in the list to an integer value.
Go’s iota defines lists of constants
iota is normally used for things like this:
const (
Red = iota
Green
Blue
)
func main() {
log.Println(Red, Green, Blue)
}
// 0, 1, 2From the above example, you can see iota starts at 0 and increases by 1 for each subsequent constant.
However, you might not want a constant with a value of 0 due to the way Golang default values work; a 0 might mean you’re actually missing data. In that case, you have two options:
// Option 1
const (
_ = iota // 0
Red // 1
Green // 2
Blue // 3
)
// Option 2
const (
Red = iota + 1 // 1
Green // 2
Blue // 3
)I personally prefer option one, since an underscore is the Go convention for something we don't need, but either way works fine.
There are more complicated ways to use iota, but for those I’ll refer you back to the iota docs as I’ve never had to actually use any of them.