go之map
什么是map
map是在Go中将值(value)与键(key)关联的内置类型,通过相应的键可以获取到值
map的定义
是引用类型,需要初始化,如果不初始化就说nil
1 2 3 4 5 6 7 8 9 10 | package main import "fmt" func main() { //var m map[key值类型]value类型 //make 初始化,不需要写数字---》数字有点用 var m map [string]string=make( map [string]string) fmt.Println(m) //map[] } |
取值和赋值
1 2 3 4 5 6 7 8 9 10 11 12 | package main import "fmt" func main() { var m map [string]string=make( map [string]string) fmt.Println(m) //map[] m[ "name" ]= "zys" m[ "age" ]= "19" fmt.Println(m) //map[age:19 name:zys] } |
定义并赋值
1 2 3 4 5 6 7 8 | package main import "fmt" func main() { var m map [string]string= map [string]string{ "name" : "zys" , "age" : "19" } fmt.Println(m) //map[age:19 name:zys] } |
定义了不初始化是nil
引用类型,当参数传递
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package main import "fmt" func main() { var m map [string]string fmt.Println(m) //map[] nil,控制台打印出来的样子,本质是nil var m1 map [string]string = make( map [string]string) fmt.Println(m1) //map[] 不是nil,完全不一样 if m == nil { fmt.Println( "m是nil" ) //m是nil } if m1 == nil { fmt.Println( "m1是nil" ) } } |
获取不存在的元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package main import "fmt" func main() { var m map [string]string= map [string]string{ "name" : "zys" , "age" : "19" } fmt.Println(m) fmt.Println(m[ "name" ]) fmt.Println( "---" ,m[ "hobby" ]) //不会报错,返回 value的0值--》"" //因为不同类型0值是不一样的,后期我们没法通用的判断值是否存在 //取值,无论存在不存在都可以 v,ok:=m[ "hobby" ] //v,ok:=m["name"] fmt.Println(v) fmt.Println(ok) if v,ok:=m[ "hobby" ];ok{ fmt.Println(v) } } |
赋值
存在就更新,不存在就新增
1 2 3 4 5 6 7 8 9 10 | package main import "fmt" func main() { var m map [string]string= map [string]string{ "name" : "zys" , "age" : "19" } m[ "name" ]= "xxx" m[ "hobby" ]= "篮球" fmt.Println(m) //map[age:19 hobby:篮球 name:xxx] } |
删除map元素
内置函数delete
1 2 3 4 5 6 7 8 9 10 11 12 | package main import "fmt" func main() { var m map [string]string= map [string]string{ "name" : "zys" , "age" : "19" } m[ "name" ]= "xxx" m[ "hobby" ]= "篮球" fmt.Println(m) //map[age:19 hobby:篮球 name:xxx] delete(m, "name" ) fmt.Println(m) //map[age:19 hobby:篮球] } |
map是引用类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import "fmt" func main() { var m map [string]string= map [string]string{ "name" : "zys" , "age" : "19" } testM(m) fmt.Println(m) //map[age:19 hobby:足球 name:lll] 存在类似于切片的坑,在函数内部增加元素的坑,只要函数中改就会影响原来的 } func testM(m map [string]string) { m[ "hobby" ]= "足球" m[ "name" ]= "lll" fmt.Println(m) //map[age:19 hobby:足球 name:lll] } |
map==的使用
map之间不能使用==操作符判断,==只能用来检查map是否为nil,值类型才允许==比较,引用类型不允许==比较,只能用==和nil比较
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)