撒科打诨
假设我们有以下枚举类型SelectChoose类型转换 - 游乐场如果基础类型 &值相同,则可以使用类型转换type Select int32type Choose int32const SelectCat Select = 0const ChooseCat Choose = 0func main() { fmt.Println(Choose(SelectCat) == ChooseCat)}映射类型 - 游乐场在所有情况下,您都可以使用地图在 2 个枚举之间进行转换type Select int32type Choose stringconst SelectCat Select = 0const ChooseCat Choose = "cat"var selectAToChooseOne = map[SelectA]ChooseOne{ SelectACat: ChooseOneCat,}func SelectToChoose(selected Select) (Choose, bool) { chosen, ok := selectToChoose[selected] return chosen, ok}func ChooseToSelect(chosen Choose) (Select, bool) { for s, c := range selectToChoose { if c == chosen { return s, true } } return Select(-1), false}func main() { chosen, ok := SelectToChoose(SelectCat) _ = ok // do something with ok fmt.Println(chosen == ChooseCat)}在这种情况下,从一种到另一种的查找将更快。这是因为直接使用基础映射来查找值。 但是,迭代每个键/值(选择/选择)对以查找正确的匹配项。我已经为这些方法添加了 一个,但这不是必需的SelectChooseSelectToChooseChooseToSelectok