一、概述
1、基本介绍
map是key-value数据结构,又称为字段或者关联数组。类似其它编程语言的集合,
在编程中是经常使用到。
2、map和数组的区别
map相对数组而言,可以存储信
二、基本语法
var map变量名 map[keytype]valuetype
1、 key 可以是什么类型
golang中的map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只包含前面几个类型的 接口, 结构体, 数组
通常为int 、string
注意: slice, map 还有 function 不可以,因为这几个没法用 == 来判断
2、 valuetype 可以是什么类型
valuetype的类型和key基本一样,这里我就不再赘述了
通常为: 数字(整数,浮点数),string,map,struct
3、 注意和说明几点
- 在给map类型赋值,必须先make空间,才能使用。
- make 时,size , 如果程序员明确知道 key-val 有多少对,最好写明确,如果不确定的话,也可以省略,交给系统维护
- map是无序的,既不会安装key来排序,也不会安装添加的顺序.->如何排序
- map的key,即不能重复,如果你重复了,则相当于覆盖
4、示例代码
package main
import (
"fmt"
)
func main() {
var map1 map[string]map[string]string
//在map1中保存2个学生信息[编号唯一, (名字,爱好,年龄)]
//1. 先给map1 make空间
map1 = make(map[string]map[string]string, 3)
//2. 给map1["no1"] make空间
map1["no1"] = make(map[string]string, 3)
map1["no1"]["name"] = "小明"
map1["no1"]["hobby"] = "看世界杯"
map1["no1"]["age"] = "20"
//3. 给map1["no2"] make空间
map1["no2"] = make(map[string]string)
map1["no2"]["name"] = "小李~"
map1["no2"]["hobby"] = "看欧洲杯"
map1["no2"]["age"] = "30"
//3. 给map1["no2"] make空间
map1["no2"] = make(map[string]string)
map1["no2"]["name"] = "小张"
map1["no2"]["hobby"] = "看欧洲杯~"
map1["no2"]["age"] = "40"
fmt.Println("map1=",map1)
}
三、快速入门案例
package main
import (
"fmt"
)
func main() {
//几个map的小案例
//map1 map[int]string
//1. map1 就是这个map类型的名字
//2. map 是一个关键字表示是一个map,固定的
//3. [int] 表示这个map的key的数据类型
//4. string 表示这个map的value的数据类型
var map1 map[int]string
//在使用map之前,需要先make一个数据空间
// make(map[int]string, 10)
//1. make是个函数,表示给map1分配数据空间
//2. map[int]string 分配的空间类型
//3. 10 表示分配空间大小
map1 = make(map[int]string, 10)
map1[10] = "tom"
map1[11] = "tom"
fmt.Println(map1)
//key还可以是 接口,结构体,数组
var arr1 = [3]int{1,2,3}
var arr2 = [3]int{1,2,4}
fmt.Println("arr1=arr2?", arr1==arr2)
var map2 map[[3]