代码拉取完成,页面将自动刷新
package util
import (
"gitee.com/conero/uymas/util/constraints"
"math/rand"
)
// ListIndex get index by search value from list
func ListIndex[T constraints.Equable](list []T, value T) (index int) {
index = -1
for i, v := range list {
if v == value {
index = i
break
}
}
return
}
// ExtractArrUnique extracting array elements with loss (non-repeatable) from an array
func ExtractArrUnique[T constraints.ValueIterable](count int, arr []T) []T {
vLen := len(arr)
if vLen <= count {
return arr
}
var extArr []T
for j := 1; j <= count; j++ {
vl := len(arr)
if vl < 1 {
break
}
idx := rand.Intn(vl)
extArr = append(extArr, arr[idx])
rpl := arr[:idx]
rpl = append(rpl, arr[idx+1:]...)
arr = rpl
}
return extArr
}
// MapKeys Extract the key name array of the dictionary
func MapKeys[T constraints.KeyIterable, X constraints.ValueIterable](vMap map[T]X) (keys []T) {
for k := range vMap {
keys = append(keys, k)
}
return
}
// MapValues Extract the values name array of the dictionary
func MapValues[T constraints.KeyIterable, X constraints.KeyIterable](vMap map[T]X) (values []X) {
for _, v := range vMap {
values = append(values, v)
}
return
}
// MapGenByKv Create dictionary by key value pair array combination
func MapGenByKv[K constraints.KeyIterable, V constraints.ValueIterable](keys []K, values []V) (kv map[K]V) {
vLen := len(values)
for i, k := range keys {
if i == vLen {
break
}
if kv == nil {
kv = map[K]V{}
}
kv[k] = values[i]
}
return
}
// MapFilter use the keys of map to filter itself
func MapFilter[K constraints.KeyIterable, V constraints.ValueIterable](kv map[K]V, filter []K) map[K]V {
var newMap = map[K]V{}
for kVal, value := range kv {
if ListIndex(filter, kVal) > -1 {
newMap[kVal] = value
}
}
return newMap
}
// MapSlice use the keys of map to slice itself
func MapSlice[K constraints.KeyIterable, V constraints.ValueIterable](kv map[K]V, filter []K) map[K]V {
var newMap = map[K]V{}
for kVal, value := range kv {
if ListIndex(filter, kVal) > -1 {
continue
}
newMap[kVal] = value
}
return newMap
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。