【Golang-Map】


MAP

1)map基本介绍

key-value==(类似python字典)

在这里插入图片描述

2)map的声明

声明不会分配内存,make才会==

  var a map[string]string
	a=make(map[string]string)
	a["no1"]="aaa"
	a["no2"]="bbb"
	a["no3"]="ccc"
	fmt.Println(a)

在这里插入图片描述

3)map的使用

	var a map[string]string
	a=make(map[string]string)
	a["no1"]="aaa"
	a["no2"]="bbb"
	a["no3"]="ccc"
	fmt.Println(a)
	b:=make(map[string]string,10)
	b["1"]="ddd"
	b["2"]="eee"
	fmt.Println(b)
	c:=map[string]string{
		"1":"aaa",
		"2":"bbb",
		"3":"ccc",
	}

在这里插入图片描述
value为map

student:=map[string]map[string]string
	student["0"]=make(map[string]string,3)
	student["0"]["name"]="tom"
	student["0"]["sex"]="男"
	student["0"]["address"]="北京"
	student["1"]=make(map[string]string,3)
	student["1"]["name"]="tina"
	student["1"]["sex"]="女"
	student["1"]["address"]="北京"

4)map 的增删改查操作

在这里插入图片描述在这里插入图片描述

	c:=map[string]string{
		"1":"aaa",
		"2":"bbb",
		"3":"ccc",
	}
	c["1"]="ddd"
	fmt.Println(c)
	delete(c,"2")
	fmt.Println(c)
	c=make(map[string]string)
	fmt.Println(c)
	val,k:=c["3"]
	if k{
		fmt.Printf("找到了,值%v",val)
	}else{
		fmt.Printf("没找到")
	}

在这里插入图片描述

5)map遍历

for-range

	student:=make(map[string]map[string]string)
	student["0"]=make(map[string]string,3)
	student["0"]["name"]="tom"
	student["0"]["sex"]="男"
	student["0"]["address"]="北京"
	student["1"]=make(map[string]string,3)
	student["1"]["name"]="tina"
	student["1"]["sex"]="女"
	student["1"]["address"]="北京"
	for k1,v1:=range student{
		fmt.Println("k1=",k1)
		for k2,v2:= range v1{
			fmt.Printf("k2=%v2 v2=%v2\n",k2,v2)
		}
	}
	c:=map[string]string{
		"1":"aaa",
		"2":"bbb",
		"3":"ccc",
	}
	for k,v:=range c{
		fmt.Printf("k=%v v=%v",k,v)
	}

在这里插入图片描述

6)map切片

切片和map都要分配内存==

	monsters:=make([]map[string]string,2)//切片,数组
	if monsters[0]==nil{
		monsters[0]=make(map[string]string,2)
		monsters[0]["name"]="aaa"
		monsters[0]["age"]="500"
	}
	if monsters[1]==nil{
		monsters[1]=make(map[string]string,2)
		monsters[1]["name"]="bbb"
		monsters[1]["age"]="500"
	}
	newmonsters:=map[string]string{
		"name":"ccc",
		"age":"23",
	}
	monsters=append(monsters,newmonsters)
	fmt.Println(monsters)

在这里插入图片描述

7)map排序

	map1:=make(map[int]int,10)
	map1[10]=100
	map1[1]=20
	map1[2]=34
	map1[3]=23
	var keys []int
	for k,_:=range map1{
		keys=append(keys,k)//这是把东西放到切片里的方法
	}
	sort.Ints(keys)
	fmt.Println(keys)
	for _,k:=range keys{
		fmt.Printf("map1[%v]=%v\n",k,map1[k])
	}

在这里插入图片描述

8)使用细节

  1. 引用类型
  2. map 的容量达到后,再想 map 增加元素,会自动扩容,并不会发生 panic,也就是说 map 能动态的增长 键值对(key-value)
  3. value 也经常使用 struct 类型
	type Stu struct{
		name string
		age int
		address string
	}
	student:=make(map[string]Stu,10)
	stu1:=Stu{"tom",18,"上海"}
	stu2:=Stu{"java",34,"北京"}
	student["1"]=stu1
	student["2"]=stu2
	for i,v :=range student{
		fmt.Printf("%v %v %v %v",i,v.name,v.age,v.address)
		fmt.Println()
	}
}

在这里插入图片描述


总结

本文仅仅简单介绍了Golang中的map,此篇是通过b站尚硅谷Golang视频的学习做的笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值