@@ -20,14 +20,21 @@ limitations under the License.
20
20
// replace "stringslices" if the "slices" package becomes standard.
21
21
package slices
22
22
23
- import goslices "slices"
24
-
25
23
// Equal reports whether two slices are equal: the same length and all
26
24
// elements equal. If the lengths are different, Equal returns false.
27
25
// Otherwise, the elements are compared in index order, and the
28
26
// 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
+ }
31
38
32
39
// Filter appends to d each element e of s for which keep(e) returns true.
33
40
// 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 {
44
51
}
45
52
46
53
// 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
+ }
49
57
50
58
// Index returns the index of the first occurrence of v in s, or -1 if
51
59
// 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
54
72
55
73
// 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