【发布时间】:2021-12-03 13:19:45
【问题描述】:
在 go 中你可以这样写一个枚举
type Direction int
const (
North Direction = iota
South
East
West
)
func main() {
// Declaring a variable myDirection with type Direction
var myDirection Direction
myDirection = West
if (myDirection == West) {
fmt.Println("myDirection is West:", myDirection)
}
}
现在你写一个枚举,它不仅有 4 个选项,而是 100 个。我想要的是一个给我“Inellisence 支持”的枚举:如果我输入枚举,输入一个 .,我想知道哪些选项有没有枚举。
这可能是这样的一个例子。有没有更好的办法?
type direction struct{}
func (d *direction) north() string {
return "north"
}
func (d *direction) east() string {
return "east"
}
func (d *direction) south() string {
return "south"
}
func (d *direction) west() string {
return "west"
}
func main() {
var d direction
d.east()
...
}
【问题讨论】:
-
使用公共前缀开始枚举值,例如
DirNorth,DirSouth。现在,当您输入packagename.Dir时,您将获得可能值的列表。 -
我明白你的意思,但这似乎是一种解决方法
-
除了你的问题,无论如何,这是一个很好的命名策略,标准库也使用。请参阅
net/http包:MethodGet、MethodPost... 和StatusOK、StatusCreated... 我不认为这是一种解决方法,我认为这是“用一块石头杀死两只鸟”。 -
好的。 LGTM。将此作为答案发布,我将关闭此问题。