您的位置 首页 golang

Golang 1.9新特性 sync.map

之前的map都不是 线程安全 的,需要加锁实现。到Go1.9发布后有了新特性,有了sync.map,它是原生支持并发安全的map,不过它的用法和以前我们熟悉的map完全不一样,因为sync.map封装了更为复杂的数据结构,以实现比之前加锁map更优秀的性能。

数据结构:

type Map struct {

mu Mutex

read atomic.Value

dirty map[interface{}]*entry

misses int

}

用法结合示例:

sync.map:

声明变量 var m sync.Map

1.Store(key, value interface{})//存储一个设置的键值。

m.Store(“1”, “b”)

2.LoadOrStore(key, value interface{}) (actual interface{}, loaded bool)

//返回键的现有值(如果存在),否则存储并返回给定的值,如果是读取则返回true,如果是存储返回false。

v, ok := m.LoadOrStore(“1”, “a”)

3.Load(key interface{}) (value interface{}, ok bool )

//读取存储在map中的值,如果没有值,则返回 nil 。OK的结果表示是否在map中找到值。

v, ok = m.Load(“1”)

4.Delete(key interface{}) //删除键对应的值。

m.Delete(“1”)

5.Range(f func(key, value interface{}) bool) //循环读取map中的值。

m.Range(func(k, v interface{}) bool {

fmt.Println(k, v)

return true

})

小结: sync.Map没有Len方法,如果要用只能range一下,比较淡疼。

更多内容请关注头条号每日编程,每天进步一点。

文章来源:智云一二三科技

文章标题:Golang 1.9新特性 sync.map

文章地址:https://www.zhihuclub.com/87008.shtml

关于作者: 智云科技

热门文章

网站地图