@@ -20,14 +20,21 @@ limitations under the License.
2020// replace "stringslices" if the "slices" package becomes standard.
2121package slices
2222
23- import goslices "slices"
24-
2523// Equal reports whether two slices are equal: the same length and all
2624// elements equal. If the lengths are different, Equal returns false.
2725// Otherwise, the elements are compared in index order, and the
2826// comparison stops at the first unequal pair.
29- // Deprecated: use [slices.Equal] instead.
30- var Equal = goslices.Equal [[]string , string ]
27+ func Equal (s1 , s2 []string ) bool {
28+ if len (s1 ) != len (s2 ) {
29+ return false
30+ }
31+ for i , n := range s1 {
32+ if n != s2 [i ] {
33+ return false
34+ }
35+ }
36+ return true
37+ }
3138
3239// Filter appends to d each element e of s for which keep(e) returns true.
3340// It returns the modified d. d may be s[:0], in which case the kept
@@ -44,14 +51,32 @@ func Filter(d, s []string, keep func(string) bool) []string {
4451}
4552
4653// Contains reports whether v is present in s.
47- // Deprecated: use [slices.Contains] instead.
48- var Contains = goslices.Contains [[]string , string ]
54+ func Contains (s []string , v string ) bool {
55+ return Index (s , v ) >= 0
56+ }
4957
5058// Index returns the index of the first occurrence of v in s, or -1 if
5159// not present.
52- // Deprecated: use [slices.Index] instead.
53- var Index = goslices.Index [[]string , string ]
60+ func Index (s []string , v string ) int {
61+ // "Contains" may be replaced with "Index(s, v) >= 0":
62+ // https://github.com/golang/go/issues/45955#issuecomment-873377947
63+ for i , n := range s {
64+ if n == v {
65+ return i
66+ }
67+ }
68+ return - 1
69+ }
70+
71+ // Functions below are not in https://github.com/golang/go/issues/45955
5472
5573// Clone returns a new clone of s.
56- // Deprecated: use [slices.Clone] instead.
57- var Clone = goslices.Clone [[]string , string ]
74+ func Clone (s []string ) []string {
75+ // https://github.com/go101/go101/wiki/There-is-not-a-perfect-way-to-clone-slices-in-Go
76+ if s == nil {
77+ return nil
78+ }
79+ c := make ([]string , len (s ))
80+ copy (c , s )
81+ return c
82+ }
0 commit comments