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 Docsiota
represents successive untyped integer constants.
That sort of makes sense, but let me put it into plain English.
– Me
iota
is 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, 2
From 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.