本文借鉴一篇博客,原文链接: http://www.jb51.net/article/56828.htm
实现向python或者javaScript的set功能,golang中本身没有这个功能,现在可以自己写类似set的功能
实现向python或者javaScript的set功能,golang中本身没有这个功能,现在可以自己写类似set的功能
代码如下:
package main
import(
"fmt"
"sync"
)
type Set struct {
m map[int]bool
sync.RWMutex
}
func New() *Set { //创建一个set对象
return &Set{
m: map[int]bool{},
}
}
func (s *Set) Add(item int) { // 向集合中添加 item 元素
s.Lock()
defer s.Unlock()
s.m[item] = true
}
func (s *Set) Remove(item int) { // 移除集合 item 元素
s.Lock()
s.Unlock()
delete(s.m, item)
}
func (s *Set) Has(item int) bool { // 判断集合是否存在 item 元素
s.RLock()
defer s.RUnlock()
_, ok := s.m[item]
return ok
}
func (s *Set) Len() int { // 获取集合的长度[元素个数]
return len(s.List())
}
func (s *Set) Clear() {