1 Star 0 Fork 1

Gitee Go/utils

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
smap.go 873 Bytes
一键复制 编辑 原始数据 按行查看 历史
Gitee 提交于 2021-08-31 17:37 +08:00 . 1.0 release.
package ioex
import "sync"
type SyncMap struct {
lk sync.Mutex
mp map[string]interface{}
}
func (c *SyncMap) init() {
if c.mp == nil {
c.mp = make(map[string]interface{})
}
}
func (c *SyncMap) Put(k string, v interface{}) {
c.lk.Lock()
defer c.lk.Unlock()
c.init()
c.mp[k] = v
}
func (c *SyncMap) Get(k string) (interface{}, bool) {
c.lk.Lock()
defer c.lk.Unlock()
c.init()
v, ok := c.mp[k]
return v, ok
}
func (c *SyncMap) Len() int {
c.lk.Lock()
defer c.lk.Unlock()
c.init()
return len(c.mp)
}
func (c *SyncMap) Del(k string) {
c.lk.Lock()
defer c.lk.Unlock()
c.init()
delete(c.mp, k)
}
func (c *SyncMap) Delun(k string) {
delete(c.mp, k)
}
func (c *SyncMap) Range(fn func(k string, v interface{}) bool) {
c.lk.Lock()
defer c.lk.Unlock()
if c.mp == nil || fn == nil {
return
}
for k, v := range c.mp {
if !fn(k, v) {
break
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/gitee-go/utils.git
git@gitee.com:gitee-go/utils.git
gitee-go
utils
utils
20586d3d1de9

搜索帮助