package main
import (
"fmt"
"sync"
)
func main() {
var scene sync.Map
scene.Store("greece", 97)
scene.Store("london", 100)
scene.Store("egypt", 200)
fmt.Println(scene.Load("london"))
scene.Delete("london")
scene.Range(func(k, v interface{}) bool {
fmt.Println("iterate:", k, v)
return true
})
}
golang没有为map提供任何清空所有元素的函数,方法。清空map的唯一办法就是重新make一个新的map。
但是处理并发问题map就会竞态。一般操作就是加锁,或者sync.map,需要使用sync特殊包
sync.map有以下特性:
无需初始化,直接声明即可。不能使用map的方式取值和设置等操作。store 存储,load获取 delete删除
使用Range配合一个回调函数进行遍历操作,通过回调函数返回内部遍历出来的值。range参数中
的回调函数的返回值功能