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)
    }
}
原文地址:https://www.cnblogs.com/ZhZhang12138/p/14886742.html