美文网首页
go 实现 set

go 实现 set

作者: wayyyy | 来源:发表于2022-03-19 02:41 被阅读0次

    go 中自带的标准库只有map,而没有set,那么我们可以利用 mapstruct{} size 为0 来简单实现一个 set

    package main
    
    import "fmt"
    
    type Set map[string]struct{}
    
    func NewSet() Set {
        s := make(map[string]struct{})
        return Set(s)
    }
    
    func NewSetWithInitSize(size int) Set {
        s := make(map[string]struct{}, size)
        return Set(s)
    }
    
    func (s Set) Has(key string) bool {
        _, exist := s[key]
        return exist
    }
    
    func (s Set) Add(key string) {
        s[key] = struct{}{}
    }
    
    func (s Set) Delete(key string) {
        delete(s, key)
    }
    
    func main() {
        s := NewSet()
    
        s.Add("hello")
        s.Add("world")
        s.Add("go")
    
        exist := s.Has("hello")
        if exist {
            fmt.Println("exist")
        }
    
        exist = s.Has("world")
        if exist {
            fmt.Println("exist")
        }
    
        s.Delete("go")
    
        exist = s.Has("go")
        if exist {
            fmt.Println("exist")
        } else {
            fmt.Println("not exist")
        }
    }
    

    更加完备的set,使用开源库:golang-set

    相关文章

      网友评论

          本文标题:go 实现 set

          本文链接:https://www.haomeiwen.com/subject/kbcgdrtx.html