Go语言sync.Map获取元素

Go语言sync.Map获取元素教程

Go 语言sync.Map 的获取元素不是跟原生的 map 一样,使用 [] 的形式,而是使用内置的 Load 函数

Go语言sync.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获取元素

使用 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")) }

程序运行后,控制台输出如下:

83 golang syncMap Load.png

我们创建了一个 sync.Map,创建完之后,使用 Store 存储元素,使用 Load 获取元素,Load 函数返回了两个值,一个是 KEY 对应的 value,另一个是 bool 值,表明 KEY 是否存在。

sync.Map获取不同类型元素

使用 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')) }

程序运行后,控制台输出如下:

84 golang syncMap Load.png

使用 sync.Map Store 函数存储元素,KEY 和 VALUE 都可以存储任意类型的元素,使用 Load 也可以获取到存储的元素。

sync.Map获取不存在元素

使用 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")) }

程序运行后,控制台输出如下:

85 golang syncMap Load.png

使用 sync.Map Load 获取不存在的元素,返回 nil 和 false。

Go语言sync.Map获取元素总结

Go 语言中 sync.Map 的获取元素不是跟原生的 map 一样,使用 [] 的形式,而是使用内置的 Load 函数。Go 语言 sync.Map Load 语法:

func (m *Map) Load(key interface{}) (value interface{}, ok bool)