From 7edfbdeb05ff4a66fa827853ab1370e6f01ef15b Mon Sep 17 00:00:00 2001 From: Ulric Qin Date: Sat, 20 Jul 2019 19:20:44 +0800 Subject: [PATCH] add some func --- slice/contains.go | 11 +++++++++++ slice/unique.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/slice/contains.go b/slice/contains.go index 085e8a9..63288f2 100644 --- a/slice/contains.go +++ b/slice/contains.go @@ -35,3 +35,14 @@ func ContainsString(sl []string, v string) bool { } return false } + + +func ContainsSlice(smallSlice, bigSlice []string) bool { + for i := 0; i < len(smallSlice); i++ { + if !ContainsString(smallSlice[i], bigSlice) { + return false + } + } + + return true +} diff --git a/slice/unique.go b/slice/unique.go index 28a5d33..444ba07 100644 --- a/slice/unique.go +++ b/slice/unique.go @@ -1,5 +1,7 @@ package slice +import "strings" + func UniqueInt64(s []int64) []int64 { size := len(s) if size == 0 { @@ -68,3 +70,30 @@ func UniqueString(s []string) []string { return ret } + +func UniqueTrimString(s []string) []string { + size := len(s) + if size == 0 { + return []string{} + } + + m := make(map[string]struct{}) + for i := 0; i < size; i++ { + item := strings.TrimSpace(s[i]) + if item == "" { + continue + } + m[item] = struct{}{} + } + + realLen := len(m) + ret := make([]string, realLen) + + idx := 0 + for key := range m { + ret[idx] = key + idx++ + } + + return ret +}