go 学习之map

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"])

  

  

原文地址:https://www.cnblogs.com/Caoxt/p/14115661.html