package tools import ( "encoding/json" "strings" "github.com/mozillazg/go-pinyin" "github.com/samber/lo" ) func ContainsInsensitive(element string, slice []string) bool { lowercasedElement := strings.TrimSpace(strings.ToLower(element)) return lo.Contains(slice, lowercasedElement) } func PinyinAbbr(source string) string { abbr := pinyin.Pinyin(source, pinyin.NewArgs()) var abbrCollect = make([]string, 0) for _, a := range abbr { abbrCollect = append(abbrCollect, a[0][0:1]) } finalAbbr := strings.Join(abbrCollect, "") return finalAbbr } // 将给定结构体的内容通过JSON转换为`map[string]interface{}`类型的值 func ConvertStructToMap[T any](origin T) map[string]interface{} { incr, _ := json.Marshal(origin) var dest map[string]interface{} json.Unmarshal(incr, &dest) return dest } func ConvertSliceToInterfaceSlice[T any](origin []T) []interface{} { dest := make([]interface{}, len(origin)) for i, e := range origin { dest[i] = e } return dest } // 对指定的数组进行分区 func PartitionSlice[T any](slice []T, chunkSize int) [][]T { var divided [][]T for i := 0; i < len(slice); i += int(chunkSize) { end := i + chunkSize if end > len(slice) { end = len(slice) } divided = append(divided, slice[i:end]) } return divided }