Я пытаюсь подсчитать количество элементов, определенных в моем перечислении (iota) в Go, но я не знаю, как это сделать.
Например, ILen и XLen,
package main
import "fmt"
const (
I1 = 1 << iota
I2
I3
ILen int = iota
)
const (
X1 = "A"
X2 = "B"
X3 = "C"
XLen int = iota
)
func main() {
fmt.Println(I1, I2, I3, ILen)
fmt.Println(X1, X2, X3, XLen)
}
Https://go.dev/play/p/krBVid3jLNq
1 2 4 3
A B C 3
Спецификация языка программирования Go Йота В объявлении констант предварительно объявленный идентификатор iota представляет последовательные нетипизированные целочисленные константы. Его значением является индекс соответствующего ConstSpec в этом объявлении константы, начиная с нуля.
Вы не можете сделать это в целом. В качестве хака вы можете определить последний элемент в iota как N_Enum и использовать его.