go实现set
2024-08-24 07:06:17
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)
}
}
最新文章
- ITIL十大流程
- 数据结构图文解析之:队列详解与C++模板实现
- ie8下jquery改变PNG的opacity出现黑边,ie6下png透明解决办法
- 在WPF控件上添加Windows窗口式调整大小行为
- memcached启动参数
- python-day7 python内置模块 面向对象
- SharePoint 2013 开发——CSOM概要
- Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)
- 关于scroll无法绑定的问题
- SparseArray HashMap 稀疏数组 二分法
- jquery中 append 和appendto的区别
- MongoDB日常保养
- 分享Mvc3+NInject+EF+LigerUI权限系统
- display:none和visibility:hidden区别
- nginx+tomcat安装配置
- macOS Mojave配置OpenGL开发环境
- PHP Composer 依赖管理的用法
- Linux-01
- 微软语音引擎 TTS 最基本使用
- koltin语言学习(一)——什么是koltin