golang 类似set使用
来源:互联网 发布:数据科学导论 编辑:程序博客网 时间:2024/05/16 10:43
本文借鉴一篇博客,原文链接: http://www.jb51.net/article/56828.htm
实现向python或者javaScript的set功能,golang中本身没有这个功能,现在可以自己写类似set的功能
实现向python或者javaScript的set功能,golang中本身没有这个功能,现在可以自己写类似set的功能
代码如下:
package mainimport( "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() { // 清空集合所有元素 s.Lock defer s.Unlock() s.m = map[int]bool{}}func (s *Set) IsEmpty() bool { // 判断集合是否为空 if s.Len() == 0 { return true } return false}func (s *Set) List() []int { // 集合列表 s.RLock() defer s.RUnlock() list := []int{} for item := range s.m { list = append(list, item) } return list}func main() { // 初始化 s := New() s.Add(1) s.Add(1) s.Add(2) s.Clear() if s.IsEmpty() { fmt.Println("0 item") } s.Add(1) s.Add(2) s.Add(3) if s.Has(2) { fmt.Println("2 does exist") } s.Remove(2) s.Remove(3) fmt.Println("list of all items", S.List())} 以此共勉...
1 0
- golang 类似set使用
- golang指针的使用,类似C语言
- [golang]map/set类型
- golang实现set数据结构
- golang 类似与定时炸弹的玩法
- 【golang】golang redis 的使用
- golang-redis之set类型简单操作
- golang: 使用 delve 调试 golang 程序
- Golang 学习及使用
- Golang使用websocket
- golang RPC使用
- Golang import使用入门
- mac golang使用protobuf
- golang pprof 使用
- golang pprof 使用
- golang pprof 使用
- FlatBuffers使用记录(Golang)
- golang simplejson 使用笔记
- python numpy多维数组切片问题
- Mysql数据库引擎
- cogs 727. [网络流24题] 太空飞行计划
- 多租户过程记录四(修改代码中)
- Machine Learning with Scikit-Learn and Tensorflow 6.6 基尼不纯度/熵
- golang 类似set使用
- sublime text 快捷操作
- 数据倾斜是多么痛?spark作业调优秘籍
- 代码重构,为什么会有框架
- HTTP防盗链
- Java9都快发布了,Java8的十大新特性你了解多少呢?
- Java常用并发容器总结(三)
- Python笔记-list、tuple、dict、set及其比较
- 线程池 线程锁