这是一个伪命题,因为golang中现在没有enum类型,只有自己写一个罗?
直接上代码了:
//SourceType 固定来源类型
type SourceType int
const (
//SourceType_PC PC
SourceType_PC SourceType = iota + 1
SourceType_H5
SourceType_Android
SourceType_IOS
)
var sourceTypeText = map[SourceType]string{
SourceType_PC: "PC",
SourceType_H5: "H5",
SourceType_Android: "Android",
SourceType_IOS: "苹果",
}
//Chinese 状态中文
func (m SourceType) Chinese() string {
return sourceTypeText[m]
}
//List 列表输出
func (m SourceType) List() []KeyMap {
km := make([]KeyMap, 0)
for k, v := range majorTypeText {
km = append(km, KeyMap{Key: fmt.Sprintf("%v", v), Val: int(k)})
}
sort.Sort(KeyMapSlice(km))
return km
}
sourceTypeColor
var sourceTypeColor = map[SourceType]string{
SourceType_PC: "red",
SourceType_H5: "red",
SourceType_Android: "blue",
SourceType_IOS: "green",
}
//Color
func (m SourceType) Color() string {
return sourceTypeColor[m]
}
使用的时候
var xxx SourceType_PC
xx.Chinese()
xx.Color()
需要一个KeyMapSlice
//KeyMap 输出模型
type KeyMap struct {
Key string `json:"k"`
Val int `json:"v"`
}
type IntKeyMap struct {
Key int `json:"k"`
Val int `json:"v"`
}
//KeyMapSlice keymap sort
type KeyMapSlice []KeyMap
func (s KeyMapSlice) Len() int {
return len(s)
}
func (s KeyMapSlice) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s KeyMapSlice) Less(i, j int) bool {
return s[i].Val < s[j].Val
}