go map (映射-类似其它语言的集合)
StevenQin · · 3959 次点击 · · 开始浏览map介绍
-
map是key-value数据结构,又称为字段或者关联数组。类似其它编程语言的集合。
基本语法
- var map的变量名
map(关键字)[keyType]valueType
1、key可以是什么类型
golang中的map可以是多种类型,比如bool,数字,string,指针,channel(管道),还可以是只包含前面几个类型的 接口,结构体,数组,
通常是int,string
-
slice map function不可做为key的数据类型。
2、valueType可以是什么类型
valueType的类型和key基本一样,通常为:数字(整数,浮点数),string,map,struct
map的声明
var a map[string]string
var a map[string]int
var a map[int]string
//a 的key是string类型,value是map类型。
var a map[string]map[string]string
声明是不会分配内存,初始化要用make,分配内存后才能赋值和使用。
var a map[string]string
//使用map前,需要先make,make的作用就是分配内存空间。
a = make(map[string]string, 10) //10代表10对k-v的空间
//key不可以重复,key相同的话,后面的覆盖前面
a["no1"] = "宋江"
a["no2"] = "吴用"
a["no1"] = "武松"
a["no3"] = "林冲"
//map中是无序的k-v
fmt.Println(a)
- 以上代码的说明
1、map在使用前一定要make。
2、map的key是不能重复的。相同的话,后面覆盖前面。
3、map的value可以相同。
4、map的key-value是无序的。
map的使用方式
1、方式1:先声明,再make,再赋值
//第一种方式: 先声明再 make
var a map[string]string
//使用map前,需要先make,make的作用就是分配内存空间。
a = make(map[string]string, 10) //10代表10对k-v的空间
//key不可以重复,key相同的话,后面的覆盖前面
a["no1"] = "宋江"
a["no2"] = "吴用"
a["no1"] = "武松"
a["no3"] = "林冲"
//map中是无序的k-v
fmt.Println(a)
2、方式2:声明的时候直接 make
//第二种方式 声明的时候 make 用到类型推导
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
3、方式3:声明的时候直接赋值
//第三种方式 声明,直接赋值 用到类型推导
heroes := map[string]string{
"hero1": "宋江",
"hero2": "林冲",
"hero3": "武松",
}
heroes["hero4"] = "卢俊义"
fmt.Println(heroes)
案例:
我们要存放三个学生的信息,每个学生有
name和sexs的信息
思咱:map [string]map[string]string(一对多)
studentMap := make(map[string]map[string]string)
//value 类型是map,所以还要 make
studentMap["stu01"] = make(map[string]string, 3)
studentMap["stu01"]["name"] = "tom"
studentMap["stu01"]["sex"] = "男"
studentMap["stu01"]["add"] = "北京长安街"
studentMap["stu02"] = make(map[string]string, 3)
studentMap["stu02"]["name"] = "mary"
studentMap["stu02"]["sex"] = "女"
studentMap["stu02"]["add"] = "上海陆家嘴"
fmt.Println(studentMap)
fmt.Println(studentMap["stu02"])
fmt.Println(studentMap["stu02"]["add"])
map的增删改查操作
-
map的增加和更新:
map["key"] = value
key不存在就是增加,存在就是更新
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
map介绍
-
map是key-value数据结构,又称为字段或者关联数组。类似其它编程语言的集合。
基本语法
- var map的变量名
map(关键字)[keyType]valueType
1、key可以是什么类型
golang中的map可以是多种类型,比如bool,数字,string,指针,channel(管道),还可以是只包含前面几个类型的 接口,结构体,数组,
通常是int,string
-
slice map function不可做为key的数据类型。
2、valueType可以是什么类型
valueType的类型和key基本一样,通常为:数字(整数,浮点数),string,map,struct
map的声明
var a map[string]string
var a map[string]int
var a map[int]string
//a 的key是string类型,value是map类型。
var a map[string]map[string]string
声明是不会分配内存,初始化要用make,分配内存后才能赋值和使用。
var a map[string]string
//使用map前,需要先make,make的作用就是分配内存空间。
a = make(map[string]string, 10) //10代表10对k-v的空间
//key不可以重复,key相同的话,后面的覆盖前面
a["no1"] = "宋江"
a["no2"] = "吴用"
a["no1"] = "武松"
a["no3"] = "林冲"
//map中是无序的k-v
fmt.Println(a)
- 以上代码的说明
1、map在使用前一定要make。
2、map的key是不能重复的。相同的话,后面覆盖前面。
3、map的value可以相同。
4、map的key-value是无序的。
map的使用方式
1、方式1:先声明,再make,再赋值
//第一种方式: 先声明再 make
var a map[string]string
//使用map前,需要先make,make的作用就是分配内存空间。
a = make(map[string]string, 10) //10代表10对k-v的空间
//key不可以重复,key相同的话,后面的覆盖前面
a["no1"] = "宋江"
a["no2"] = "吴用"
a["no1"] = "武松"
a["no3"] = "林冲"
//map中是无序的k-v
fmt.Println(a)
2、方式2:声明的时候直接 make
//第二种方式 声明的时候 make 用到类型推导
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
3、方式3:声明的时候直接赋值
//第三种方式 声明,直接赋值 用到类型推导
heroes := map[string]string{
"hero1": "宋江",
"hero2": "林冲",
"hero3": "武松",
}
heroes["hero4"] = "卢俊义"
fmt.Println(heroes)
案例:
我们要存放三个学生的信息,每个学生有
name和sexs的信息
思咱:map [string]map[string]string(一对多)
studentMap := make(map[string]map[string]string)
//value 类型是map,所以还要 make
studentMap["stu01"] = make(map[string]string, 3)
studentMap["stu01"]["name"] = "tom"
studentMap["stu01"]["sex"] = "男"
studentMap["stu01"]["add"] = "北京长安街"
studentMap["stu02"] = make(map[string]string, 3)
studentMap["stu02"]["name"] = "mary"
studentMap["stu02"]["sex"] = "女"
studentMap["stu02"]["add"] = "上海陆家嘴"
fmt.Println(studentMap)
fmt.Println(studentMap["stu02"])
fmt.Println(studentMap["stu02"]["add"])
map的增删改查操作
-
map的增加和更新:
map["key"] = value
key不存在就是增加,存在就是更新