sync.Map详解
sync.Map是1.9才推荐的并发安全的map。
package main import ( "fmt" "sync" ) func main() { var sm sync.Map //Store函数添加元素 sm.Store(1,"a") //Load函数获得value if v,ok := sm.Load(1); ok { fmt.Println(v) } /* LoadOrStore函数获取或者添加。 参数是key,value。 如果该key存在且没有被标记删除则返回原先的value(不更新)和true。 不存在则store,返回该value 和false。 */ if v,ok := sm.LoadOrStore(1,"b"); ok { fmt.Println(v) } if v,ok := sm.LoadOrStore(2,"c"); !ok { fmt.Println(v) } //删除 sm.Delete(1) //遍历,参数为函数。函数参数为key value返回值为bool,荡返回false遍历停止 sm.Range(func(k,v interface{}) bool { fmt.Printf("key=%d,value=%s\n",k,v) return true }) //sync.map暂时不支持len参数,获取长度需要遍历,比较复杂。 // fmt.Println(len(sm)) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。