以下是一个使用sync.Map的简单示例:
package main
import (
"fmt"
"sync"
)
func main() {
var m sync.Map
m.Store("foo", 1) // 存储一个键值对
m.Store("bar", 2)
m.Store("baz", 3)
// 从map中读取一个值
fooVal, _ := m.Load("foo")
fmt.Println(fooVal) // 1
// 删除一个键值对
m.Delete("bar")
// 遍历map中的所有键值对
m.Range(func(key, value interface{}) bool {
fmt.Println(key, value)
return true
})
}
在上面的示例中,我们首先使用sync.Map的零值初始化了一个map变量m
,然后在m
中存储了三个键值对。可以使用m.Load
方法来读取m
中的值,并使用m.Delete
方法删除某个键值对。最后,我们使用m.Range
函数遍历了整个map,并对每个键值对执行了一个函数。需要注意的是,由于sync.Map是并发安全的,因此可以安全地从多个goroutine中访问它。