Commit 41077a2b235587b39007656350372ab65bfd697a
1 parent
6d794428
Exists in
master
and in
1 other branch
feat✨:公共库
Showing
13 changed files
with
375 additions
and
161 deletions
Show diff stats
.gitignore
service/cardholder/config-registry.go
| ... | ... | @@ -9,15 +9,15 @@ import ( |
| 9 | 9 | ) |
| 10 | 10 | |
| 11 | 11 | var ( |
| 12 | - Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置 | |
| 12 | + _Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置 | |
| 13 | 13 | ) |
| 14 | 14 | |
| 15 | 15 | func NewConfigs() { |
| 16 | - Configs = make(map[string]*CardActivityConfig) | |
| 16 | + _Configs = make(map[string]*CardActivityConfig) | |
| 17 | 17 | } |
| 18 | 18 | |
| 19 | 19 | func GetConfig(gameId string) (config *CardActivityConfig, has bool) { |
| 20 | - config, has = Configs[gameId] | |
| 20 | + config, has = _Configs[gameId] | |
| 21 | 21 | return |
| 22 | 22 | } |
| 23 | 23 | |
| ... | ... | @@ -119,7 +119,7 @@ func ConfigDecode(gameId string, configRaw *CardActivityConfigRaw) { |
| 119 | 119 | Config.StarShopConfig[i2.Id] = i2 |
| 120 | 120 | } |
| 121 | 121 | } |
| 122 | - Configs[gameId] = Config | |
| 122 | + _Configs[gameId] = Config | |
| 123 | 123 | |
| 124 | 124 | GenerateConfigClient(Config) |
| 125 | 125 | } | ... | ... |
service/cardholder/handle.go
| ... | ... | @@ -5,7 +5,7 @@ import ( |
| 5 | 5 | "apigame/service/constd" |
| 6 | 6 | "apigame/util/util-lx/lxalilog" |
| 7 | 7 | "apigame/util/util-lx/lxtime" |
| 8 | - "apigame/util/uttype" | |
| 8 | + "apigame/util/utslice" | |
| 9 | 9 | "strconv" |
| 10 | 10 | ) |
| 11 | 11 | |
| ... | ... | @@ -103,7 +103,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH |
| 103 | 103 | sequenceId, cohort, |
| 104 | 104 | openMode) |
| 105 | 105 | // 打乱顺序 |
| 106 | - uttype.Shuffle(newCards) | |
| 106 | + utslice.Shuffle(newCards) | |
| 107 | 107 | for _, i3 := range newCards { |
| 108 | 108 | allNewCards = append(allNewCards, i3) |
| 109 | 109 | } |
| ... | ... | @@ -226,7 +226,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model |
| 226 | 226 | // 存档 |
| 227 | 227 | SaveData(req.GameID, gameData) |
| 228 | 228 | |
| 229 | - uttype.Shuffle(rsp.NewCards) | |
| 229 | + utslice.Shuffle(rsp.NewCards) | |
| 230 | 230 | |
| 231 | 231 | // 返回信息 |
| 232 | 232 | rsp.CardHolderInfo = GetInfo(gameData, config) | ... | ... |
service/cardholder/logic.go
| ... | ... | @@ -7,7 +7,8 @@ import ( |
| 7 | 7 | "apigame/util/util-lx/lxalilog" |
| 8 | 8 | "apigame/util/util-lx/lxtime" |
| 9 | 9 | "apigame/util/utjson" |
| 10 | - "apigame/util/uttype" | |
| 10 | + "apigame/util/utslice" | |
| 11 | + "apigame/util/utstring" | |
| 11 | 12 | ) |
| 12 | 13 | |
| 13 | 14 | // SaveData 存储数据 |
| ... | ... | @@ -117,7 +118,7 @@ func GetNewCard(gameData *dto.CardHolderData, conf *CardActivityConfig) int { |
| 117 | 118 | list = append(list, index) |
| 118 | 119 | } |
| 119 | 120 | |
| 120 | - indexMin := uttype.Min(list...) | |
| 121 | + indexMin := utslice.Min(list) | |
| 121 | 122 | return int(indexMin % rate) |
| 122 | 123 | } |
| 123 | 124 | |
| ... | ... | @@ -194,7 +195,7 @@ func DoOpen(gameId string, |
| 194 | 195 | combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) |
| 195 | 196 | scale := gameData.Details.CardSequenceScales[combineId] |
| 196 | 197 | cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) |
| 197 | - cardIdInt := uttype.StringToInt(cardId) | |
| 198 | + cardIdInt := utstring.StringToInt(cardId) | |
| 198 | 199 | // 增加刻度 |
| 199 | 200 | gameData.Details.CardSequenceScales[combineId] = scale + 1 |
| 200 | 201 | // 增加卡牌 |
| ... | ... | @@ -228,7 +229,7 @@ func DoOpen(gameId string, |
| 228 | 229 | { |
| 229 | 230 | recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) |
| 230 | 231 | dto.SaveRecord(gameId, dto.NewCardHolderRecordOpen(recordBase, |
| 231 | - openMode, uttype.StringToInt(confCardholder.Id), utjson.JsonString(newCards))) | |
| 232 | + openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards))) | |
| 232 | 233 | } |
| 233 | 234 | |
| 234 | 235 | return |
| ... | ... | @@ -270,7 +271,7 @@ func DoOpenCheckAward(gameId string, |
| 270 | 271 | } |
| 271 | 272 | // 集齐处理发奖 |
| 272 | 273 | gameData.Details.Album[albumId] += 1 |
| 273 | - award := confAlbum.Rewards[uttype.IntToString(gameData.Details.Round)] | |
| 274 | + award := confAlbum.Rewards[utstring.IntToString(gameData.Details.Round)] | |
| 274 | 275 | awardAlbum[albumId] = award |
| 275 | 276 | { |
| 276 | 277 | // 记录日志 |
| ... | ... | @@ -282,7 +283,7 @@ func DoOpenCheckAward(gameId string, |
| 282 | 283 | // 判断 处理 发放轮次奖励 轮次完成 |
| 283 | 284 | if CheckRoundFinish(gameData, config) { |
| 284 | 285 | // 返回奖励 |
| 285 | - awardRound = config.Awards[uttype.IntToString(gameData.Details.Round)] | |
| 286 | + awardRound = config.Awards[utstring.IntToString(gameData.Details.Round)] | |
| 286 | 287 | |
| 287 | 288 | // 记录日志 |
| 288 | 289 | recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) | ... | ... |
| ... | ... | @@ -0,0 +1,66 @@ |
| 1 | +package utmap | |
| 2 | + | |
| 3 | +import ( | |
| 4 | + "math/rand" | |
| 5 | + "venus/util/uttype" | |
| 6 | +) | |
| 7 | + | |
| 8 | +// Keys Keys切片 | |
| 9 | +func Keys[T1 comparable, T2 any](dict map[T1]T2) []T1 { | |
| 10 | + list := make([]T1, 0) | |
| 11 | + for k, _ := range dict { | |
| 12 | + list = append(list, k) | |
| 13 | + } | |
| 14 | + return list | |
| 15 | +} | |
| 16 | + | |
| 17 | +// Values Values切片 | |
| 18 | +func Values[T1 comparable, T2 any](dict map[T1]T2) []T2 { | |
| 19 | + list := make([]T2, 0) | |
| 20 | + for _, v := range dict { | |
| 21 | + list = append(list, v) | |
| 22 | + } | |
| 23 | + return list | |
| 24 | +} | |
| 25 | + | |
| 26 | +// ContainValue 值等于 | |
| 27 | +func ContainValue[T1 comparable, T2 comparable](dict map[T1]T2, value T2) bool { | |
| 28 | + for _, v := range dict { | |
| 29 | + if v == value { | |
| 30 | + return true | |
| 31 | + } | |
| 32 | + } | |
| 33 | + return false | |
| 34 | +} | |
| 35 | + | |
| 36 | +// ContainValueEquals 值等于 | |
| 37 | +func ContainValueEquals[T1 comparable, T2 uttype.EqualAble](dict map[T1]T2, value T2) bool { | |
| 38 | + for _, v := range dict { | |
| 39 | + if v.Equals(value) { | |
| 40 | + return true | |
| 41 | + } | |
| 42 | + } | |
| 43 | + return false | |
| 44 | +} | |
| 45 | + | |
| 46 | +// ContainValueBy 值符合 | |
| 47 | +func ContainValueBy[T1 comparable, T2 any](dict map[T1]T2, value T2, equals func(v1 T2, v2 T2) bool) bool { | |
| 48 | + for _, v := range dict { | |
| 49 | + if equals(v, value) { | |
| 50 | + return true | |
| 51 | + } | |
| 52 | + } | |
| 53 | + return false | |
| 54 | +} | |
| 55 | + | |
| 56 | +// RandomOne 随机一个值 | |
| 57 | +func RandomOne[T1 comparable, T2 any](dict map[T1]T2) T2 { | |
| 58 | + if len(dict) <= 0 { | |
| 59 | + return *new(T2) | |
| 60 | + } | |
| 61 | + list := make([]T1, 0) | |
| 62 | + for i, _ := range dict { | |
| 63 | + list = append(list, i) | |
| 64 | + } | |
| 65 | + return dict[list[rand.Intn(len(list))]] | |
| 66 | +} | ... | ... |
| ... | ... | @@ -0,0 +1,183 @@ |
| 1 | +package utslice | |
| 2 | + | |
| 3 | +import ( | |
| 4 | + "apigame/util/uttype" | |
| 5 | + "math/rand" | |
| 6 | +) | |
| 7 | + | |
| 8 | +// Contains 判断切片是否包含某元素 | |
| 9 | +func Contains[T comparable](list []T, value T) bool { | |
| 10 | + for _, v := range list { | |
| 11 | + if v == value { | |
| 12 | + return true | |
| 13 | + } | |
| 14 | + } | |
| 15 | + return false | |
| 16 | +} | |
| 17 | + | |
| 18 | +// RandomOne 随机一个元素 | |
| 19 | +func RandomOne[T any](list []T) T { | |
| 20 | + if len(list) <= 0 { | |
| 21 | + return *new(T) | |
| 22 | + } | |
| 23 | + return list[rand.Intn(len(list))] | |
| 24 | +} | |
| 25 | + | |
| 26 | +// Remove 切片删除一个元素 | |
| 27 | +func Remove[T comparable](list []T, item T) []T { | |
| 28 | + for i := 0; i < len(list); i++ { | |
| 29 | + if item == list[i] { | |
| 30 | + list = append(list[:i], list[i+1:]...) | |
| 31 | + i = i - 1 | |
| 32 | + } | |
| 33 | + } | |
| 34 | + return list | |
| 35 | +} | |
| 36 | + | |
| 37 | +// RemoveList 切片删除多个元素 | |
| 38 | +func RemoveList[T comparable](list []T, items []T) []T { | |
| 39 | + dMap := make(map[T]bool) | |
| 40 | + for _, s := range items { | |
| 41 | + dMap[s] = true | |
| 42 | + } | |
| 43 | + | |
| 44 | + for i := 0; i < len(list); i++ { | |
| 45 | + if _, ok := dMap[list[i]]; ok { | |
| 46 | + list = append(list[:i], list[i+1:]...) | |
| 47 | + i = i - 1 | |
| 48 | + } | |
| 49 | + } | |
| 50 | + return list | |
| 51 | +} | |
| 52 | + | |
| 53 | +// Sum 求和 | |
| 54 | +func Sum[T uttype.UtNumber](list []T) T { | |
| 55 | + var result T = 0 | |
| 56 | + for _, v := range list { | |
| 57 | + result += v | |
| 58 | + } | |
| 59 | + return result | |
| 60 | +} | |
| 61 | + | |
| 62 | +// Min 最小值 | |
| 63 | +func Min[T uttype.UtNumber](list []T) T { | |
| 64 | + var result T = 0 | |
| 65 | + for _, v := range list { | |
| 66 | + if v < result { | |
| 67 | + result = v | |
| 68 | + } | |
| 69 | + } | |
| 70 | + return result | |
| 71 | +} | |
| 72 | + | |
| 73 | +// Max 最大值 | |
| 74 | +func Max[T uttype.UtNumber](list []T) T { | |
| 75 | + var result T = 0 | |
| 76 | + for _, v := range list { | |
| 77 | + if v > result { | |
| 78 | + result = v | |
| 79 | + } | |
| 80 | + } | |
| 81 | + return result | |
| 82 | +} | |
| 83 | + | |
| 84 | +// Any 其中有一个元素符合就返回true | |
| 85 | +func Any[T uttype.UtNumber](list []T, value T) bool { | |
| 86 | + for _, v := range list { | |
| 87 | + if v == value { | |
| 88 | + return true | |
| 89 | + } | |
| 90 | + } | |
| 91 | + return false | |
| 92 | +} | |
| 93 | + | |
| 94 | +// AnyEquals 其中有一个元素符合就返回true | |
| 95 | +func AnyEquals[T uttype.EqualAble](list []T, value T) bool { | |
| 96 | + for _, v := range list { | |
| 97 | + if v.Equals(value) { | |
| 98 | + return true | |
| 99 | + } | |
| 100 | + } | |
| 101 | + return false | |
| 102 | +} | |
| 103 | + | |
| 104 | +// AnyBy 其中有一个元素符合就返回true | |
| 105 | +func AnyBy[T any](list []T, value T, equals func(v1 T, v2 T) bool) bool { | |
| 106 | + for _, v := range list { | |
| 107 | + if equals(v, value) { | |
| 108 | + return true | |
| 109 | + } | |
| 110 | + } | |
| 111 | + return false | |
| 112 | +} | |
| 113 | + | |
| 114 | +// All 所有元素符合就返回true | |
| 115 | +func All[T uttype.UtNumber](list []T, value T) bool { | |
| 116 | + for _, v := range list { | |
| 117 | + if v != value { | |
| 118 | + return false | |
| 119 | + } | |
| 120 | + } | |
| 121 | + return true | |
| 122 | +} | |
| 123 | + | |
| 124 | +// AllEquals 所有元素符合就返回true | |
| 125 | +func AllEquals[T uttype.EqualAble](list []T, value T) bool { | |
| 126 | + for _, v := range list { | |
| 127 | + if !v.Equals(value) { | |
| 128 | + return false | |
| 129 | + } | |
| 130 | + } | |
| 131 | + return true | |
| 132 | +} | |
| 133 | + | |
| 134 | +// AllBy 所有元素符合就返回true | |
| 135 | +func AllBy[T any](list []T, value T, equals func(v1 T, v2 T) bool) bool { | |
| 136 | + for _, v := range list { | |
| 137 | + if !equals(v, value) { | |
| 138 | + return false | |
| 139 | + } | |
| 140 | + } | |
| 141 | + return true | |
| 142 | +} | |
| 143 | + | |
| 144 | +// Filter 过滤 | |
| 145 | +func Filter[T comparable](list []T, value T) []T { | |
| 146 | + result := make([]T, 0) | |
| 147 | + for _, v := range list { | |
| 148 | + if v == value { | |
| 149 | + result = append(result, v) | |
| 150 | + } | |
| 151 | + } | |
| 152 | + return result | |
| 153 | +} | |
| 154 | + | |
| 155 | +// FilterEquals 过滤 | |
| 156 | +func FilterEquals[T uttype.EqualAble](list []T, value T) []T { | |
| 157 | + result := make([]T, 0) | |
| 158 | + for _, v := range list { | |
| 159 | + if v.Equals(value) { | |
| 160 | + result = append(result, v) | |
| 161 | + } | |
| 162 | + } | |
| 163 | + return result | |
| 164 | +} | |
| 165 | + | |
| 166 | +// FilterBy 过滤 | |
| 167 | +func FilterBy[T any](list []T, value T, equals func(v1 T, v2 T) bool) []T { | |
| 168 | + result := make([]T, 0) | |
| 169 | + for _, v := range list { | |
| 170 | + if equals(v, value) { | |
| 171 | + result = append(result, v) | |
| 172 | + } | |
| 173 | + } | |
| 174 | + return result | |
| 175 | +} | |
| 176 | + | |
| 177 | +// Shuffle 打乱 | |
| 178 | +func Shuffle[T any](list []T) { | |
| 179 | + for i := len(list) - 1; i > 0; i-- { | |
| 180 | + j := rand.Intn(i + 1) | |
| 181 | + list[i], list[j] = list[j], list[i] | |
| 182 | + } | |
| 183 | +} | ... | ... |
| ... | ... | @@ -0,0 +1,51 @@ |
| 1 | +package utstring | |
| 2 | + | |
| 3 | +import "strings" | |
| 4 | + | |
| 5 | +func ListStringToListInt(list []string) []int { | |
| 6 | + result := make([]int, 0) | |
| 7 | + for _, v := range list { | |
| 8 | + result = append(result, StringToInt(v)) | |
| 9 | + } | |
| 10 | + return result | |
| 11 | +} | |
| 12 | +func ListStringToListInt64(list []string) []int64 { | |
| 13 | + result := make([]int64, 0) | |
| 14 | + for _, v := range list { | |
| 15 | + result = append(result, StringToInt64(v)) | |
| 16 | + } | |
| 17 | + return result | |
| 18 | +} | |
| 19 | +func StringToListString(str string, sep string) []string { | |
| 20 | + return strings.Split(str, sep) | |
| 21 | +} | |
| 22 | +func StringToListInt(str string, sep string) []int { | |
| 23 | + return ListStringToListInt(strings.Split(str, sep)) | |
| 24 | +} | |
| 25 | +func StringToListListString(str string, sep1, sep2 string) [][]string { | |
| 26 | + result := make([][]string, 0) | |
| 27 | + list1 := strings.Split(str, sep1) | |
| 28 | + for _, v := range list1 { | |
| 29 | + list2 := strings.Split(v, sep2) | |
| 30 | + result = append(result, list2) | |
| 31 | + } | |
| 32 | + return result | |
| 33 | +} | |
| 34 | +func StringToListListInt(str string, sep1, sep2 string) [][]int { | |
| 35 | + result := make([][]int, 0) | |
| 36 | + list1 := strings.Split(str, sep1) | |
| 37 | + for _, v := range list1 { | |
| 38 | + list2 := strings.Split(v, sep2) | |
| 39 | + result = append(result, ListStringToListInt(list2)) | |
| 40 | + } | |
| 41 | + return result | |
| 42 | +} | |
| 43 | +func StringToListListInt64(str string, sep1, sep2 string) [][]int64 { | |
| 44 | + result := make([][]int64, 0) | |
| 45 | + list1 := strings.Split(str, sep1) | |
| 46 | + for _, v := range list1 { | |
| 47 | + list2 := strings.Split(v, sep2) | |
| 48 | + result = append(result, ListStringToListInt64(list2)) | |
| 49 | + } | |
| 50 | + return result | |
| 51 | +} | ... | ... |
| ... | ... | @@ -0,0 +1,30 @@ |
| 1 | +package utstring | |
| 2 | + | |
| 3 | +import ( | |
| 4 | + "strconv" | |
| 5 | +) | |
| 6 | + | |
| 7 | +func StringToInt(str string) int { | |
| 8 | + if value, err := strconv.Atoi(str); err == nil { | |
| 9 | + return value | |
| 10 | + } | |
| 11 | + return 0 | |
| 12 | +} | |
| 13 | +func StringToInt32(str string) int32 { | |
| 14 | + return int32(StringToInt(str)) | |
| 15 | +} | |
| 16 | +func StringToInt64(str string) int64 { | |
| 17 | + if value, err := strconv.ParseInt(str, 10, 64); err == nil { | |
| 18 | + return value | |
| 19 | + } | |
| 20 | + return 0 | |
| 21 | +} | |
| 22 | +func IntToString(value int) string { | |
| 23 | + return strconv.Itoa(value) | |
| 24 | +} | |
| 25 | +func Int32ToString(value int32) string { | |
| 26 | + return IntToString(int(value)) | |
| 27 | +} | |
| 28 | +func Int64ToString(value int64) string { | |
| 29 | + return strconv.FormatInt(value, 10) | |
| 30 | +} | ... | ... |
util/uttype/number.go
| ... | ... | @@ -1,21 +0,0 @@ |
| 1 | -package uttype | |
| 2 | - | |
| 3 | -// Int 整型 | |
| 4 | -type Int interface { | |
| 5 | - int | int8 | int16 | int32 | int64 | float32 | float64 | |
| 6 | -} | |
| 7 | - | |
| 8 | -// Uint 无符号整型 | |
| 9 | -type Uint interface { | |
| 10 | - uint | uint8 | uint16 | uint32 | |
| 11 | -} | |
| 12 | - | |
| 13 | -// Float 浮点 | |
| 14 | -type Float interface { | |
| 15 | - float32 | float64 | |
| 16 | -} | |
| 17 | - | |
| 18 | -// Number 数字 | |
| 19 | -type Number interface { | |
| 20 | - Int | Uint | Float | |
| 21 | -} |
util/uttype/slice.go
| ... | ... | @@ -1,43 +0,0 @@ |
| 1 | -package uttype | |
| 2 | - | |
| 3 | -import "math/rand" | |
| 4 | - | |
| 5 | -// Contains 切片内是否有 | |
| 6 | -func Contains[T comparable](values []T, value T) bool { | |
| 7 | - for _, v := range values { | |
| 8 | - if v == value { | |
| 9 | - return true | |
| 10 | - } | |
| 11 | - } | |
| 12 | - return false | |
| 13 | -} | |
| 14 | - | |
| 15 | -// Min 最小值 | |
| 16 | -func Min[T Number](values ...T) T { | |
| 17 | - result := values[0] | |
| 18 | - for _, v := range values[1:] { | |
| 19 | - if v < result { | |
| 20 | - result = v | |
| 21 | - } | |
| 22 | - } | |
| 23 | - return result | |
| 24 | -} | |
| 25 | - | |
| 26 | -// Max 最大值 | |
| 27 | -func Max[T Number](values ...T) T { | |
| 28 | - result := values[0] | |
| 29 | - for _, v := range values[1:] { | |
| 30 | - if v > result { | |
| 31 | - result = v | |
| 32 | - } | |
| 33 | - } | |
| 34 | - return result | |
| 35 | -} | |
| 36 | - | |
| 37 | -// Shuffle 打乱 | |
| 38 | -func Shuffle[T any](list []T) { | |
| 39 | - for i := len(list) - 1; i > 0; i-- { | |
| 40 | - j := rand.Intn(i + 1) | |
| 41 | - list[i], list[j] = list[j], list[i] | |
| 42 | - } | |
| 43 | -} |
util/uttype/string.go
| ... | ... | @@ -1,84 +0,0 @@ |
| 1 | -package uttype | |
| 2 | - | |
| 3 | -import ( | |
| 4 | - "strconv" | |
| 5 | - "strings" | |
| 6 | -) | |
| 7 | - | |
| 8 | -const ( | |
| 9 | - StrSpe1 = "|" | |
| 10 | - StrSpe2 = "_" | |
| 11 | -) | |
| 12 | - | |
| 13 | -func StringToInt(str string) int { | |
| 14 | - if value, err := strconv.Atoi(str); err == nil { | |
| 15 | - return value | |
| 16 | - } | |
| 17 | - return 0 | |
| 18 | -} | |
| 19 | -func StringToInt32(str string) int32 { | |
| 20 | - return int32(StringToInt(str)) | |
| 21 | -} | |
| 22 | -func StringToInt64(str string) int64 { | |
| 23 | - if value, err := strconv.ParseInt(str, 10, 64); err == nil { | |
| 24 | - return value | |
| 25 | - } | |
| 26 | - return 0 | |
| 27 | -} | |
| 28 | -func IntToString(value int) string { | |
| 29 | - return strconv.Itoa(value) | |
| 30 | -} | |
| 31 | -func Int32ToString(value int32) string { | |
| 32 | - return IntToString(int(value)) | |
| 33 | -} | |
| 34 | -func Int64ToString(value int64) string { | |
| 35 | - return strconv.FormatInt(value, 10) | |
| 36 | -} | |
| 37 | - | |
| 38 | -func ListStringToListInt(list []string) []int { | |
| 39 | - result := make([]int, 0) | |
| 40 | - for _, v := range list { | |
| 41 | - result = append(result, StringToInt(v)) | |
| 42 | - } | |
| 43 | - return result | |
| 44 | -} | |
| 45 | -func ListStringToListInt64(list []string) []int64 { | |
| 46 | - result := make([]int64, 0) | |
| 47 | - for _, v := range list { | |
| 48 | - result = append(result, StringToInt64(v)) | |
| 49 | - } | |
| 50 | - return result | |
| 51 | -} | |
| 52 | -func StringToListString(str string) []string { | |
| 53 | - return strings.Split(str, StrSpe1) | |
| 54 | -} | |
| 55 | -func StringToListInt(str string) []int { | |
| 56 | - return ListStringToListInt(strings.Split(str, StrSpe1)) | |
| 57 | -} | |
| 58 | -func StringToListListString(str string) [][]string { | |
| 59 | - result := make([][]string, 0) | |
| 60 | - list1 := strings.Split(str, StrSpe1) | |
| 61 | - for _, v := range list1 { | |
| 62 | - list2 := strings.Split(v, StrSpe2) | |
| 63 | - result = append(result, list2) | |
| 64 | - } | |
| 65 | - return result | |
| 66 | -} | |
| 67 | -func StringToListListInt(str string) [][]int { | |
| 68 | - result := make([][]int, 0) | |
| 69 | - list1 := strings.Split(str, StrSpe1) | |
| 70 | - for _, v := range list1 { | |
| 71 | - list2 := strings.Split(v, StrSpe2) | |
| 72 | - result = append(result, ListStringToListInt(list2)) | |
| 73 | - } | |
| 74 | - return result | |
| 75 | -} | |
| 76 | -func StringToListListInt64(str string) [][]int64 { | |
| 77 | - result := make([][]int64, 0) | |
| 78 | - list1 := strings.Split(str, StrSpe1) | |
| 79 | - for _, v := range list1 { | |
| 80 | - list2 := strings.Split(v, StrSpe2) | |
| 81 | - result = append(result, ListStringToListInt64(list2)) | |
| 82 | - } | |
| 83 | - return result | |
| 84 | -} |
| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | +package uttype | |
| 2 | + | |
| 3 | +type UtInt interface { | |
| 4 | + ~int | ~int8 | ~int16 | ~int32 | ~int64 | |
| 5 | +} | |
| 6 | + | |
| 7 | +type UtUint interface { | |
| 8 | + ~uint | ~uint8 | ~uint16 | ~uint32 | |
| 9 | +} | |
| 10 | + | |
| 11 | +type UtFloat interface { | |
| 12 | + ~float32 | ~float64 | |
| 13 | +} | |
| 14 | + | |
| 15 | +type UtNumber interface { | |
| 16 | + UtInt | UtUint | UtFloat | |
| 17 | +} | |
| 18 | + | |
| 19 | +type UtBase interface { | |
| 20 | + UtNumber | string | |
| 21 | +} | ... | ... |