package utils type BasicType interface { int | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string } func InArray[T BasicType](needle T, hystack []T) bool { for _, item := range hystack { if needle == item { return true } } return false } func SliceArray[T any](arr []T, offset int, limit int) []T { size := len(arr) if size <= offset { return []T{} } else if size > offset && size < offset+limit { return arr[offset:size] } else { return arr[offset : offset+limit] } } func ToMap[K comparable, T any](arr []T, getKey func(*T) K) map[K]T { r := make(map[K]T) for _, v := range arr { k := getKey(&v) r[k] = v } return r } // func InArray(needle interface{}, hystack interface{}) bool { // switch key := needle.(type) { // case string: // for _, item := range hystack.([]string) { // if key == item { // return true // } // } // case int: // for _, item := range hystack.([]int) { // if key == item { // return true // } // } // case int64: // for _, item := range hystack.([]int64) { // if key == item { // return true // } // } // default: // return false // } // return false // }