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)
}
}

最新文章

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

热门文章

  1. shader之顶点着色器
  2. 牛客月赛 G-many sum(筛因子)
  3. POJ1251 Jungle Roads Kruskal+scanf输入小技巧
  4. python列表逆序三种方法
  5. php 连接 memcached 并调用
  6. Unity5 AssetBundle资源管理架构设计
  7. 基于Unity 5的次世代卡通渲染技术 -- Unite 2017 米哈游总监贺甲分享实录
  8. Codevs 1257 打砖块
  9. PJzhang:kali linux安装网易云音乐、Visual Studio Code、skype
  10. layui时间控件联动:开始时间、结束时间,有效时间范围