add slice helper

This commit is contained in:
kenneth 2022-05-09 14:28:35 +08:00
parent ac53e4e70c
commit 58ee8a0338

64
pkg/slice/slice.go Normal file
View File

@ -0,0 +1,64 @@
package slice
import (
"math/rand"
"strconv"
"strings"
"time"
)
// Contains slice中是否包含某个字符串
func Contains(slice []string, element string) bool {
for _, i := range slice {
if i == element {
return true
}
}
return false
}
// RemoveDuplicatesFromSlice 去重
func RemoveDuplicatesFromSlice(intSlice []string) []string {
keys := make(map[string]bool)
var list []string
for _, entry := range intSlice {
if _, value := keys[entry]; !value {
keys[entry] = true
list = append(list, entry)
}
}
return list
}
// Shuffle 随机打乱
func Shuffle(array []string) []string {
random := rand.New(rand.NewSource(time.Now().UnixNano()))
for i := len(array) - 1; i > 0; i-- {
j := random.Intn(i + 1)
array[i], array[j] = array[j], array[i]
}
return array
}
// ReverseSlice 反转
func ReverseSlice(a []int) []int {
for i := len(a)/2 - 1; i >= 0; i-- {
pos := len(a) - 1 - i
a[i], a[pos] = a[pos], a[i]
}
return a
}
// ConvertSliceToString 将 slice 转换为逗号分隔的字符串
func ConvertSliceToString(input []int) string {
var output []string
for _, i := range input {
output = append(output, strconv.Itoa(i))
}
return strings.Join(output, ",")
}