简介:
这个数据结构是线程安全的(基本类型Map结构体在并发读写时会panic严重错误),它填补了Map线程不安全的缺陷,不过最好只在需要的情况下使用。它一般用于并发模型中对同一类map结构体的读写,或其他适用于的情况。
关于的源码解析文章:Go 1.9 揭秘
正文:
它主要五个方法及其功能简介:
1、Store 存 key,value
2、LoadOrStore 取&存-具体看代码
3、Load 取key对应的value
4、Range 遍历所有的key,value
5、Delete 删除key,及其value
package main
import (
"fmt"
"sync"
)
func main() {
var m
//Store
(1,"a")
(2,"b")
//LoadOrStore
//若key不存在,则存入key和value,返回false和输入的value
v,ok := ("1","aaa")
(ok,v) //false aaa
//若key已存在,则返回true和key对应的value,不会修改原来的value
v,ok = (1,"aaa")
(ok,v) //false aaa
//Load
v,ok = (1)
if ok{
("it's an existing key,value is ",v)
} else {
("it's an unknown key")
}
//Range
//遍历, 要求输入一个func作为参数
f := func(k, v interface{}) bool {
//这个函数的入参、出参的类型都已经固定,不能修改
//可以在函数体内编写自己的代码,调用map中的k,v
(k,v)
return true
}
(f)
//Delete
(1)
((1))
}