[Golang] 关于的使用

时间:2025-03-01 19:05:07

简介:

这个数据结构是线程安全的(基本类型Map结构体在并发读写时会panic严重错误),它填补了Map线程不安全的缺陷,不过最好只在需要的情况下使用。它一般用于并发模型中对同一类map结构体的读写,或其他适用于的情况。

关于的源码解析文章:Go 1.9 揭秘

正文:

它主要五个方法及其功能简介:

1、Store   存 key,value

2、LoadOrStore   取&存-具体看代码

3、Load   取key对应的value

4、Range   遍历所有的key,value

5、Delete   删除key,及其value

package main

import (
	"fmt"
	"sync"
)

func main() {
	var m 

	//Store
	(1,"a")
	(2,"b")

	//LoadOrStore
	//若key不存在,则存入key和value,返回false和输入的value
	v,ok := ("1","aaa")
	(ok,v) //false aaa

	//若key已存在,则返回true和key对应的value,不会修改原来的value
	v,ok = (1,"aaa")
	(ok,v) //false aaa

	//Load
	v,ok = (1)
	if ok{
		("it's an existing key,value is ",v)
	} else {
		("it's an unknown key")
	}

	//Range
	//遍历, 要求输入一个func作为参数
	f := func(k, v interface{}) bool {
		//这个函数的入参、出参的类型都已经固定,不能修改
		//可以在函数体内编写自己的代码,调用map中的k,v

			(k,v)
			return true
		}
	(f)

	//Delete
	(1)
	((1))

}