Map 声明是不会分配内存的,初始化需要make,分配内存后才能赋值和是使用。无序排列。
三种创建方法:
//第一种 var person map[string]string person = make(map[string]string, 3) person["name"] = "caoxt" person["hobby"] = "football" person["play"] = "pc" fmt.Println(person["name"]) //第二种 person2 := make(map[string]string, 3) person2["name"] = "小明" person2["hobby"] = "足球" person2["paly"] = "电脑" fmt.Println(person2["hobby"]) //第三种 var person3 map[string]string = map[string]string{ "name": "小明3", "hobby": "足球3", "paly": "电脑3", } fmt.Println(person3["name"]) //第三种简写 person4 := map[string]string{ "name": "大明", "hobby": "足球4", "play": "电脑4", } fmt.Println(person4)
//map的值仍未map结构
classmate := make(map[string]map[string]string, 3) classmate["num1"] = make(map[string]string, 3) classmate["num1"]["name"] = "tom1" classmate["num1"]["sex"] = "male" classmate["num2"] = make(map[string]string, 3) classmate["num2"]["name"] = "tom2" classmate["num2"]["sex"] = "male2" classmate["num3"] = make(map[string]string, 3) classmate["num3"]["name"] = "tom3" classmate["num3"]["sex"] = "male3" fmt.Println(classmate["num3"]["name"])
动态添加map切片
var classmate []map[string]string classmate = make([]map[string]string,2) classmate[0] = make(map[string]string, 2) classmate[0]["name"] = "tom" classmate[0]["age"] = "10" classmate[1] = make(map[string]string, 2) classmate[1]["name"] = "tom2" classmate[1]["age"] = "20" //newclassmate := map[string]string //newclassmate = make(map[string]string,2) newclassmate := map[string]string{ "name": "tom3", "age": "30", } classmate = append(classmate, newclassmate) fmt.Println(classmate[2]["name"])