首页 > 其他 > 详细

go实现set

时间:2019-05-17 17:37:59      阅读:102      评论:0      收藏:0      [点我收藏+]
package main

import (
    "fmt"
    "sync"
)

type object interface{}
type Set struct {
    m map[object]bool
    sync.RWMutex //线程安全实现,记录下
}

//初始化
func New() *Set {
    return &Set{
        m: map[object]bool{},
    }
}

func (s *Set) Add(item object) {
    s.Lock()
    defer s.Unlock()
    s.m[item] = true
}

func (s *Set) Remove(item object) {
    s.Lock()
    defer s.Unlock()
    delete(s.m, item)
}

func (s *Set) Clean() {
    s.m = map[object]bool{}
}
func (s *Set) Len() int {
    return len(s.m)
}

func (s *Set) Contains(item object) bool {
    _, ok := s.m[item];
    return ok
}

func (s *Set) IsEmpty() bool {
    fmt.Println(len(s.m))
    return len(s.m) > 0
}

func main() {
    s := New()
    fmt.Println(s.IsEmpty())
    s.Add("aaa")
    fmt.Println(s.IsEmpty())
    s.Add("1")
    s.Add("2")
    s.Add("3")
    fmt.Println(s.Contains("3"))
    //s.Clean()
    for key, _ := range s.m {
        fmt.Println("Key:", key)
    }
}

 

go实现set

原文:https://www.cnblogs.com/wujf/p/10882477.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!