36 lines
576 B
Go
36 lines
576 B
Go
|
package chaos
|
||
|
|
||
|
type GSet struct {
|
||
|
Elements map[string]bool `json: "Elements"`
|
||
|
}
|
||
|
|
||
|
func NewGSet() *GSet {
|
||
|
return &GSet{Elements: make(map[string]bool)}
|
||
|
}
|
||
|
|
||
|
func (gs *GSet) Add(element string) {
|
||
|
gs.Elements[element] = true
|
||
|
}
|
||
|
|
||
|
func (gs *GSet) Lookup(element string) bool {
|
||
|
_, exists := gs.Elements[element]
|
||
|
return exists
|
||
|
}
|
||
|
|
||
|
func (gs *GSet) Compare(gset *GSet) bool {
|
||
|
for k := range gs.Elements {
|
||
|
hasK := gset.Lookup(k)
|
||
|
if !hasK {
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func (gs *GSet) Merge(gset *GSet) *GSet {
|
||
|
for k := range gset.Elements {
|
||
|
gs.Add(k)
|
||
|
}
|
||
|
return gs
|
||
|
}
|