Go 自定义集合类型
package main import "fmt" //定义MySet类型 type MySet map[interface{}]bool //判断元素是否存在 func (m MySet) isExist(a interface{}) bool { return m[a] } //返回set长度 func (m MySet) len() int { return len(m) } //设置值 func (m MySet) set(a interface{}) { m[a] = true } //删除值 func (m MySet) delete(a interface{}) { delete(m, a) } //测试代码 func main() { //创建一个set var a MySet = make(MySet) //相当于 //var a MySet = make(map[interface{}]bool) //打印set的长度 //fmt.Println(a.len()) //放入一个值 a.set(1) //放入一个相同值 a.set(1) a.set("lqz") a.set("lqz") a.set("lqz") a.set("lqz") a.set("lqz") a.set("lqz") //打印长度,还是1 //fmt.Println(a.len()) //判断1是否存在 //fmt.Println(a.isExist(2)) ////删除1 a.delete(1) ////判断1是否存在 fmt.Println(a.isExist(1)) fmt.Println(a.len()) for i,_:=range a{ fmt.Println(i) } }