package main import "fmt" /* map 是引用类型 var name = map[keyType]valueType map的key的类型: 可以是多种类型,比如 bool,数组,string,指针,channel(管道) 大部分都是int活着string类型 使用说明: 1.使用前要make 2.key重复后者会覆盖前者 */ //map切片 切片的数据类型是map就称为是map切片 ,则map的个数就可以动态变化了 func mapSlice() { //声明map切片 monster := make([]map[string]string, 1) monster[0] = make(map[string]string) monster[0]["2"] = "2" monster[0]["24"] = "24" monster[0]["1"] = "1" //声明一个新map newMap := map[string]string{"1": "1"} //将map添加到切片中 monster = append(monster, newMap) fmt.Println("map切片是:", monster) } func main() { //map声明,这个时候是没有分配数据空间的 var a map[string]string //在使用前要先分用make来分配数据空间 a = make(map[string]string, 10) a["name"] = "宋江" //如果key重复后者会覆盖前者 fmt.Println(a) mapUse() exercise() mapSlice() } //map的声明方式 func mapUse() { //方式一 var a map[string]string //在使用前要先分用make来分配数据空间 a = make(map[string]string, 10) fmt.Println(a) //方式二 推荐这种 比较清晰 cities := make(map[string]string) cities["no1"] = "北京" fmt.Println(cities["no1"]) //方式二 heroes := map[string]string{"heroes1": "宋江", "heroes2": "卢俊义"} fmt.Println(heroes) } func exercise() { // map key是string 值有事map类型 这就是二维的了 student := make(map[string]map[string]string) //只要使用到map就必须要make!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~ student["stu1"] = make(map[string]string) student["stu1"]["name"] = "tom" student["stu1"]["age"] = "20" //查找 并判断有没有这个值 v, ok := student["stu1"] if ok { fmt.Println("有stu1这个值 值是:", v) } else { fmt.Println("没有stu1这个值") } fmt.Println(student) //map删除 delete(student, "stu1") //map变量名称,key值 fmt.Println(student) }