这是一个例子:
package main
type State int
const (
Created State = iota
Modified
Deleted
)
func main() {
// Some code here where I need the list
// of all available constants of this type.
}
为此的用例是创建有限状态机(FSM)。能够获取所有常量将帮助我编写一个测试用例,以确保每个新值在FSM映射中都有一个对应的条目。
最佳答案
如果您的常量全部按顺序排列,则可以使用以下命令:
type T int
const (
TA T = iota
TB
TC
NumT
)
func AllTs() []T {
ts := make([]T, NumT)
for i := 0; i < int(NumT); i++ {
ts[i] = T(i)
}
return ts
}
您也可以将输出缓存在
init()
。仅当按顺序用iota
初始化所有常量时,这才起作用。如果您需要适用于所有情况的东西,请使用显式 slice 。关于go - 如何在Go中获取类型的所有常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45888678/