-
Notifications
You must be signed in to change notification settings - Fork 25
/
slice_set.go
161 lines (146 loc) · 3.28 KB
/
slice_set.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package goutil
// SetToStrings sets a element to the string set.
func SetToStrings(set []string, a string) []string {
for _, s := range set {
if s == a {
return set
}
}
return append(set, a)
}
// RemoveFromStrings removes a element from the string set.
func RemoveFromStrings(set []string, a string) []string {
for i, s := range set {
if s == a {
return append(set[:i], set[i+1:]...)
}
}
return set
}
// RemoveAllFromStrings removes all the a element from the string set.
func RemoveAllFromStrings(set []string, a string) []string {
length := len(set)
for {
set = RemoveFromStrings(set, a)
if length == len(set) {
return set
}
length = len(set)
}
}
// SetToInts sets a element to the int set.
func SetToInts(set []int, a int) []int {
for _, s := range set {
if s == a {
return set
}
}
return append(set, a)
}
// RemoveFromInts removes a element from the int set.
func RemoveFromInts(set []int, a int) []int {
for i, s := range set {
if s == a {
return append(set[:i], set[i+1:]...)
}
}
return set
}
// RemoveAllFromInts removes all the a element from the int set.
func RemoveAllFromInts(set []int, a int) []int {
length := len(set)
for {
set = RemoveFromInts(set, a)
if length == len(set) {
return set
}
length = len(set)
}
}
// SetToInt32s sets a element to the int32 set.
func SetToInt32s(set []int32, a int32) []int32 {
for _, s := range set {
if s == a {
return set
}
}
return append(set, a)
}
// RemoveFromInt32s removes a element from the int32 set.
func RemoveFromInt32s(set []int32, a int32) []int32 {
for i, s := range set {
if s == a {
return append(set[:i], set[i+1:]...)
}
}
return set
}
// RemoveAllFromInt32s removes all the a element from the int32 set.
func RemoveAllFromInt32s(set []int32, a int32) []int32 {
length := len(set)
for {
set = RemoveFromInt32s(set, a)
if length == len(set) {
return set
}
length = len(set)
}
}
// SetToInt64s sets a element to the int64 set.
func SetToInt64s(set []int64, a int64) []int64 {
for _, s := range set {
if s == a {
return set
}
}
return append(set, a)
}
// RemoveFromInt64s removes a element from the int64 set.
func RemoveFromInt64s(set []int64, a int64) []int64 {
for i, s := range set {
if s == a {
return append(set[:i], set[i+1:]...)
}
}
return set
}
// RemoveAllFromInt64s removes all the a element from the int64 set.
func RemoveAllFromInt64s(set []int64, a int64) []int64 {
length := len(set)
for {
set = RemoveFromInt64s(set, a)
if length == len(set) {
return set
}
length = len(set)
}
}
// SetToInterfaces sets a element to the interface{} set.
func SetToInterfaces(set []interface{}, a interface{}) []interface{} {
for _, s := range set {
if s == a {
return set
}
}
return append(set, a)
}
// RemoveFromInterfaces removes a element from the interface{} set.
func RemoveFromInterfaces(set []interface{}, a interface{}) []interface{} {
for i, s := range set {
if s == a {
return append(set[:i], set[i+1:]...)
}
}
return set
}
// RemoveAllFromInterfaces removes all the a element from the interface{} set.
func RemoveAllFromInterfaces(set []interface{}, a interface{}) []interface{} {
length := len(set)
for {
set = RemoveFromInterfaces(set, a)
if length == len(set) {
return set
}
length = len(set)
}
}