Golang中没有直接提供Set数据结构,不像Java中有现成的HashSet可以使用。但是Golang中提供了一种数据结构map,map就类似于Java中HashMap。我们可以使用Golang自带的map来实现Set,具体思路为:我们拿到map的键,然后忽略值,这样就可以实现一个Set。
具体代码实现
type Empty struct {
}
type Set struct {
m map[string]Empty
}
//产生set的工厂
func SetFactory() *Set {
return &Set{
m: map[string]Empty{},
}
}
//添加元素
func (s *Set) Add(val string) {
s.m[val] = Empty{}
}
func (s *Set) Remove(val string) {
delete(s.m, val)
}
func (s *Set) Len() int {
return len(s.m)
}
//清空set
func (s *Set) Clear() {
s.m = make(map[string]Empty)
}