1 回答

TA貢獻1934條經驗 獲得超2個贊
假設我們有以下枚舉類型
Select
Choose
類型轉換 - 游樂場
如果基礎類型 &值相同,則可以使用類型轉換
type Select int32
type Choose int32
const SelectCat Select = 0
const ChooseCat Choose = 0
func main() {
fmt.Println(Choose(SelectCat) == ChooseCat)
}
映射類型 - 游樂場
在所有情況下,您都可以使用地圖在 2 個枚舉之間進行轉換
type Select int32
type Choose string
const SelectCat Select = 0
const 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
- 1 回答
- 0 關注
- 101 瀏覽
添加回答
舉報