Go 语言 中 sync.Map 的获取元素不是跟原生的 map 一样,使用 [] 的形式,而是使用内置的 Load 函数。
func (m *Map) Load(key interface{}) (value interface{}, ok bool)
参数 | 描述 |
---|---|
m | sync.Map 对象。 |
key | 需要获取的键。 |
返回值 | 描述 |
---|---|
value | 返回 key 对应的值。 |
ok | key 存在,则返回 true,否则,返回 false。 |
在 map 中获取键为 key 的元素值,这里的 key 和 value 都是 interface 类型的,因此 key 和 value 可以存入任意的类型。
因为返回的 value 是 interface 类型的,因此 value 我们不可以直接使用,而必须要转换之后才可以使用,返回的 bool 值,表明获取是否成功。
使用 sync.Map Store 函数添加元素,sync.Map Load 获取元素
package main
import (
"fmt"
"sync"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用 sync.Map Store 函数添加元素,sync.Map Load 获取元素
var mapHaiCoder sync.Map
mapHaiCoder.Store("Server", "Golang")
mapHaiCoder.Store("JavaScript", "Vue")
mapHaiCoder.Store("Db", "Redis")
fmt.Println(mapHaiCoder.Load("Server"))
fmt.Println(mapHaiCoder.Load("JavaScript"))
fmt.Println(mapHaiCoder.Load("Db"))
}
程序运行后,控制台输出如下:
我们创建了一个 sync.Map,创建完之后,使用 Store 存储元素,使用 Load 获取元素,Load 函数返回了两个值,一个是 KEY 对应的 value,另一个是 bool 值,表明 KEY 是否存在。
使用 sync.Map Store 函数可以存储任意类型的元素,Load 可以获取任意类型的元素
package main
import (
"fmt"
"sync"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用 sync.Map Store 函数可以存储任意类型的元素,Load可以获取任意类型的元素
var mapHaiCoder sync.Map
mapHaiCoder.Store("Server", "Golang")
mapHaiCoder.Store("Date", 1024)
mapHaiCoder.Store('B', true)
fmt.Println(mapHaiCoder.Load("Server"))
fmt.Println(mapHaiCoder.Load("Date"))
fmt.Println(mapHaiCoder.Load('B'))
}
程序运行后,控制台输出如下:
使用 sync.Map Store 函数存储元素,KEY 和 VALUE 都可以存储任意类型的元素,使用 Load 也可以获取到存储的元素。
使用 sync.Map Load 获取不存在的元素,返回 nil 和 false
package main
import (
"fmt"
"sync"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用 sync.Map Load 获取不存在的元素,返回 nil 和 false
var mapHaiCoder sync.Map
mapHaiCoder.Store("Server", "Golang")
mapHaiCoder.Store("JavaScript", "Vue")
mapHaiCoder.Store("Db", "Redis")
fmt.Println(mapHaiCoder.Load("Server"))
fmt.Println(mapHaiCoder.Load("NotExist"))
}
程序运行后,控制台输出如下:
使用 sync.Map Load 获取不存在的元素,返回 nil 和 false。
Go 语言中 sync.Map 的获取元素不是跟原生的 map 一样,使用 [] 的形式,而是使用内置的 Load 函数。Go 语言 sync.Map Load 语法:
func (m *Map) Load(key interface{}) (value interface{}, ok bool)