...
1
2
3
4 package sets
5
6 type String map[string]interface{}
7
8 func (s String) Len() int {
9 return len(s)
10 }
11
12 func (s String) List() []string {
13 val := make([]string, 0, len(s))
14 for k := range s {
15 val = append(val, k)
16 }
17 return val
18 }
19
20 func (s String) Has(val string) bool {
21 _, found := s[val]
22 return found
23 }
24
25 func (s String) Insert(vals ...string) {
26 for _, val := range vals {
27 s[val] = nil
28 }
29 }
30
31 func (s String) Difference(s2 String) String {
32 s3 := String{}
33 for k := range s {
34 if _, found := s2[k]; !found {
35 s3.Insert(k)
36 }
37 }
38 return s3
39 }
40
41 func (s String) SymmetricDifference(s2 String) String {
42 s3 := String{}
43 for k := range s {
44 if _, found := s2[k]; !found {
45 s3.Insert(k)
46 }
47 }
48 for k := range s2 {
49 if _, found := s[k]; !found {
50 s3.Insert(k)
51 }
52 }
53 return s3
54 }
55
56 func (s String) Intersection(s2 String) String {
57 s3 := String{}
58 for k := range s {
59 if _, found := s2[k]; found {
60 s3.Insert(k)
61 }
62 }
63 return s3
64 }
65
View as plain text