go 语言的映射(map)

基本语法 var map变量名map[keytype]valuetype

PS: key、value的类型: bool、数字、string、指针、channel、还可以是只包含前面几个类型的接口、结构体、数组
PS: key通常为int 、string类型,value通常为数字(整数、浮点数) 、string、map、结构体
PS: slice、map、function不可以

var a map[string]string
	a = make(map[string]string)
	a["id"] = "123"
	a["name"] = "王二"
	//map[id:123 name:王二]

快速创建

   a :=make(map[string]string)
   a["id"] = "123"
   a["name"] = "王二"
//map[id:123 name:王二]
ps:map特点在使用前要makemap的key和value是无序的,当key重复时,仅把最后一个作为key的value作为value

初始化,赋值

a :=map[int]string{1:"123",3:456}
//map[1:123 3:456]

增加

格式:
name [key]=“value”

  a :=make(map[string]string)
   a["id"] = "123"
   a["name"] = "王二"
   //map[id:123 name:王二]
   a["sex"]="男"
     //map[id:123 name:王二 sex:男]

删除

格式:
delete(mapname,key)

 a :=make(map[string]string)
   a["id"] = "123"
   a["name"] = "王二"
   //map[id:123 name:王二]
   a["sex"]="男"
     //map[id:123 name:王二 sex:男]
   delet(a,"sex"//map[id:123 name:王二]

ps:如果没有找不到key 不会报错

清空map

go语言没有专门的函数去清空map,可以通过迭代的方式删除
*** 只能通过for -range***

	for i := range a {
		delete(a, i)
	}

还有一种方式就是新建一个map替代旧的一个,旧的会自动被垃圾回收机制回收

查询

格式:
value,bool =map[key]
value 根据key 返回value
bool:查询到则true否则false


 a :=make(map[string]string)
   a["id"] = "123"
   a["name"] = "王二"
   a["sex"]="男"
   value, bool := a["sex"]
   // 男 true

当 map的value为map时

a :=makemap[string]map[string]string)
a["班级1"]=make(map[string]string)
a["班级1"]["2011010"]="王五"
a["班级1"]["2011011"]="李四"
a["班级1"]["2011012"]="张三"
a["班级2"]=make(map[string]string)
a["班级2"]["2012010"]="王五1"
a["班级2"]["2012011"]="李四1"
a["班级2"]["2012012"]="张三1"
// 遍历
for i,v:=range a{
	fmt.Println(i)
	for i1,v1:=range v{
			fmt.Print("key=", i1, "\t", "value=", v1)
	}
		fmt.Println()
}
	fmt.Println(len(a), len(a["班级1"]))
//班级1
//key=2011012	value=李四key=2011010	value=王明key=2011011	value=王五
//班级2
//key=2012010	value=王明1key=2012011	value=王五1key=2012012	value=李四1
//  2    3
	
	

当map的value为结构体时

type Books struct{
	Id int
	Name string	
}
func main(){
	a:=make(map[string]Books)
	a[1]=Books{Id:123,Name:"wanger"}
	//map[1:{123 wanger }]
}

或者

 
type Person struct{
	name string
	sex string
	age int
}
 
func main(){
	m := map[uint]Person{
		0 : Person{"张三", "男", 18},
		1 : Person{"李四", "女", 17},
	}
	fmt.Println(m)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值