github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/courier/enumeration/enum.go (about) 1 package enumeration 2 3 import ( 4 //"fmt" 5 "strconv" 6 ) 7 8 type EnumOption struct { 9 Val interface{} `json:"val"` 10 Value interface{} `json:"value"` 11 Label string `json:"label"` 12 } 13 14 type Enum []EnumOption 15 16 var EnumMap = map[string]Enum{} 17 18 func RegisterEnums(enumType string, values map[string]string) { 19 //if _, ok := EnumMap[enumType]; ok { 20 //panic(fmt.Errorf("`%s` is already defined, please make enum unqiue in one service", enumType)) 21 //} 22 for value, label := range values { 23 EnumMap[enumType] = append(EnumMap[enumType], EnumOption{Value: value, Label: label}) 24 } 25 } 26 27 //@deprecated 28 func RegisterEnum(enumType string, optionValue string, label string) { 29 if _, ok := EnumMap[enumType]; !ok { 30 EnumMap[enumType] = []EnumOption{} 31 } 32 EnumMap[enumType] = append(EnumMap[enumType], EnumOption{Value: optionValue, Label: label}) 33 } 34 35 func GetEnumValueList(enumType string) (enumList []EnumOption, found bool) { 36 enumList, found = EnumMap[enumType] 37 return 38 } 39 40 func AsInt64(v interface{}, defaultInteger int64) (int64, error) { 41 switch s := v.(type) { 42 case []byte: 43 if len(s) > 0 { 44 i, err := strconv.ParseInt(string(s), 10, 64) 45 if err != nil { 46 return defaultInteger, err 47 } 48 return i, err 49 } 50 return defaultInteger, nil 51 case string: 52 if s != "" { 53 i, err := strconv.ParseInt(s, 10, 64) 54 if err != nil { 55 return defaultInteger, err 56 } 57 return i, err 58 } 59 return defaultInteger, nil 60 case int: 61 return int64(s), nil 62 case int8: 63 return int64(s), nil 64 case int16: 65 return int64(s), nil 66 case int32: 67 return int64(s), nil 68 case int64: 69 return int64(s), nil 70 case uint: 71 return int64(s), nil 72 case uint8: 73 return int64(s), nil 74 case uint16: 75 return int64(s), nil 76 case uint32: 77 return int64(s), nil 78 case uint64: 79 return int64(s), nil 80 case nil: 81 return defaultInteger, nil 82 default: 83 return defaultInteger, nil 84 } 85 }