加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang sync.map包

发布时间:2020-12-16 09:21:28 所属栏目:大数据 来源:网络整理
导读:sync.Map详解 sync.Map是1.9才推荐的并发安全的map。 package mainimport ("fmt""sync")func main() {var sm sync.Map//Store函数添加元素sm.Store(1,"a")//Load函数获得valueif v,ok := sm.Load(1); ok {fmt.Println(v)}/*LoadOrStore函数获取或者添加。参

sync.Map详解

sync.Map是1.9才推荐的并发安全的map。

package main

import (
	"fmt"
	"sync"
)

func main() {
	var sm sync.Map
	//Store函数添加元素
	sm.Store(1,"a")
	//Load函数获得value
	if v,ok := sm.Load(1); ok {
		fmt.Println(v)
	}
	/*
		LoadOrStore函数获取或者添加。
		参数是key,value。
		如果该key存在且没有被标记删除则返回原先的value(不更新)和true。
		不存在则store,返回该value 和false。
	*/
	if v,ok := sm.LoadOrStore(1,"b"); ok {
		fmt.Println(v)
	}
	if v,ok := sm.LoadOrStore(2,"c"); !ok {
		fmt.Println(v)
	}
	//删除
	sm.Delete(1)
	//遍历,参数为函数。函数参数为key value返回值为bool,荡返回false遍历停止
	sm.Range(func(k,v interface{}) bool {
		fmt.Printf("key=%d,value=%sn",k,v)
		return true
	})
	//sync.map暂时不支持len参数,获取长度需要遍历,比较复杂。
	// fmt.Println(len(sm))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读