• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go语言syncMapLoadOrStore

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Go 语言 中 sync.Map 的 LoadOrStore 函数 表示,如果我们获取的 key 存在,那么就返回 key 对应的元素,如果获取的 key 不存在,那么就返回我们设置的值,并且将我们设置的值,存入 map。

sync.Map LoadOrStore函数

语法

func (m *Map) LoadOrStore(key, value interface{}) (actual interface{}, loaded bool) 

参数

参数 描述
m sync.Map 对象。
key map 中元素的键。
value map 中元素的值。

 

 

 

 

 

返回值

返回值 描述
actual 获取到的值,或者被添加的值。
loaded key 在 map 中是否存在。

 

 

 

 

说明

在 map 中获取键为 key 的元素值,如果 key 存在,则将获取的值通过 actual 返回,loaded 返回 true。如果 key 不存在,那么就将 key 和 value 添加加 sync.Map,actual 返回 value,loaded 返回 false。

案例

sync.Map LoadOrStore元素存在

sync.Map LoadOrStore 元素存在,返回元素值和 ture

package main
import (
    "fmt"
    "sync"
)
func main() {
    fmt.Println("冰乐(https://www.cnblogs.com/taotaozhuanyong/)")
    //sync.Map LoadOrStore 元素存在,返回元素值和 ture
    var mapHaiCoder sync.Map
    mapHaiCoder.Store("Server", "Golang")
    mapHaiCoder.Store("JavaScript", "Vue")
    mapHaiCoder.Store("Db", "Redis")
    fmt.Println(mapHaiCoder.LoadOrStore("Server", "ServerData"))
    fmt.Println(mapHaiCoder.LoadOrStore("JavaScript", "JavaScriptData"))
}

输出如下:

使用 LoadOrStore 获取 sync.Map 的元素时,如果 KEY 存在,那么返回 KEY 对应的元素值和 ture。

sync.Map LoadOrStore元素不存在

sync.Map LoadOrStore 元素不存在,返回设置的元素值和 false

package main
import (
    "fmt"
    "sync"
)
func main() {
    fmt.Println("冰乐(https://www.cnblogs.com/taotaozhuanyong/)")
    //sync.Map LoadOrStore 元素不存在,返回设置的元素值和 false
    var mapHaiCoder sync.Map
    mapHaiCoder.Store("Server", "Golang")
    mapHaiCoder.Store("JavaScript", "Vue")
    mapHaiCoder.Store("Db", "Redis")
    fmt.Println(mapHaiCoder.LoadOrStore("ServerData", "ServerData"))
    fmt.Println(mapHaiCoder.LoadOrStore("JavaScriptData", "JavaScriptData"))
}

运行如下:

使用 sync.Map LoadOrStore 获取 sync.Map 的 KEY 不存在时,返回设置的元素值和 false。

sync.Map LoadOrStore 元素不存在,添加元素

使用 sync.Map Load 获取 KEY 不存在的元素时,会将 key 和 value 添加进 map

package main
import (
    "fmt"
    "sync"
)
func walk(key, value interface{})bool{
    fmt.Println("Key =",key, "Value =", value)
    return true
}
func main() {
    fmt.Println("冰乐(https://www.cnblogs.com/taotaozhuanyong/)")
    //使用 sync.Map Load 获取 KEY 不存在的元素时,会将 key 和 value 添加进 map
    var mapHaiCoder sync.Map
    mapHaiCoder.Store("Server", "Golang")
    mapHaiCoder.Store("JavaScript", "Vue")
    mapHaiCoder.Store("Db", "Redis")
    mapHaiCoder.LoadOrStore("ServerData", "ServerData")
    mapHaiCoder.LoadOrStore("JavaScriptData", "JavaScriptData")
    mapHaiCoder.Range(walk)
}

运行结果如下:

首先,创建了一个三个元素的 sync.Map,接着我们再次使用 LoadOrStore 访问两个 key 都不存在的元素,最后我们使用 Range 遍历所有的元素。

此时,我们发现,使用 LoadOrStore 添加的两个新 KEY 和 VALUE 都存在了 map 中,即使用 LoadOrStore 访问不存在的元素时,元素会被添加进 map。

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

Go 语言中 sync.Map 的 LoadOrStore 函数表示,如果我们获取的 key 存在,那么就返回 key 对应的元素,如果获取的 key 不存在,那么就返回我们设置的值,并且将我们设置的值,存入 map。

Go 语言 sync.Map LoadOrStore 语法:

func (m *Map) LoadOrStore(key, value interface{}) (actual interface{}, loaded bool) 

转载自:https://haicoder.net/golang/golang-syncmap-loadorstore.html

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
version.go发布时间:2022-07-10
下一篇:
跟源码时显示can not find a declaration to go to解决办法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap