From 58ee8a03386e035063f0dd26053403936feb05b4 Mon Sep 17 00:00:00 2001 From: kenneth Date: Mon, 9 May 2022 14:28:35 +0800 Subject: [PATCH] add slice helper --- pkg/slice/slice.go | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 pkg/slice/slice.go diff --git a/pkg/slice/slice.go b/pkg/slice/slice.go new file mode 100644 index 0000000..c32a2e8 --- /dev/null +++ b/pkg/slice/slice.go @@ -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, ",") +}