map
2022/3/3 6:15:06
本文主要是介绍map,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
map是key-value数据结构,是一种无序的键值对的集合
1、基本语法
var 变量名 map[keytype]valuetype
注意:slice,map还有function不可以作为key,因为这几个没法用==来判断
var a map[string]string var b map[int]string var c map[int]int var d map[string]int var e map[string]map[string]string
2、使用方式
2.1 先声明后赋值
func main() { var myMap map[string]string myMap = make(map[string]string, 2) myMap["name"] = "小明" myMap["age"] = "18" fmt.Printf("myMap=%v\n", myMap) }
2.2 声明时直接make
func main() { myMap := make(map[string]string, 2) myMap["name"] = "小明" myMap["age"] = "18" fmt.Printf("myMap=%v\n", myMap) }
2.3 声明时直接赋值
func main() { myMap := map[string]string{ "name": "小明", "age": "18", } fmt.Printf("myMap=%v\n", myMap) }
3、map的增删改查
3.1 map[key] = value //如果key还没有就是增加,如果key存在就是修改。
3.2 删除,使用内置函数delete()
func delete(m map[Type]Type1, key Type)
如果key存在,就会删除该key-value,如果key不存在,不操作,但是也不会增加
func main() { myMap := map[string]string{ "name": "小明", "age": "18", } delete(myMap, "name") fmt.Printf("myMap=%v\n", myMap) }
如果要删除map的所有key,没有一个专门的方法一次删除,可以遍历一下key,逐个删除
或者map = make(...),make一个新的map,让原来的称为垃圾,被gc回收
3.3 map查找
func main() { myMap := map[string]string{ "name": "小明", "age": "18", } value, ok := myMap["name"] if ok { fmt.Printf("myMap=%v\n", value) } else { fmt.Println("没找到") } }
如果myMap这个map中存在"name",那么ok就会为true,否则为false
4、map的遍历
使用for-range来遍历
func main() { myMap := map[string]string{ "name": "小明", "age": "18", } for key, value := range myMap { fmt.Printf("key=%v,value=%v\n", key, value) } }
5、map切片
切片的类型如果是map,则我们称为slice of map,map切片,这样使用则map个数就可以动态变化了
func main() { mapSlice := make([]map[string]string, 2) mapSlice[0] = map[string]string{ "name": "小明", "age": "18", } mapSlice[1] = map[string]string{ "name": "小红", "age": "19", } newMap := map[string]string{ "name": "小王", "age": "20", } // 动态添加map mapSlice = append(mapSlice, newMap) fmt.Printf("mapSlice=%v\n", mapSlice) }
6、map排序
golang中没有专门的方法针对map的key进行排序
golang中的map默认是无需的,也不是按照添加的顺序存放的,每次遍历,得到的输出可能不一样。
golang中的排序,是先对key进行排序,然后根据key遍历输出即可
func main() { var intMap map[int]int = make(map[int]int, 10) intMap[0] = 12 intMap[8] = 15 intMap[9] = 10 intMap[7] = 23 intMap[5] = 12 intMap[6] = 50 intMap[3] = 78 intMap[1] = 10 intMap[2] = 82 intMap[4] = 30 // 无序的 fmt.Println("排序前················") for key, value := range intMap { fmt.Printf("key=%v,value=%v\n", key, value) } fmt.Println("排序前················") // 1.先将map的key放到切片中 // 2.对切片进行排序 // 3.遍历切片,然后按照key来输出map的值 keySlice := make([]int, 10) for key, _ := range intMap { keySlice = append(keySlice, key) } sort.Ints(keySlice) fmt.Println("排序后················") for _, key := range keySlice { fmt.Printf("key=%v,value=%v\n", key, intMap[key]) } fmt.Println("排序后················") }
这篇关于map的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)