Go map的概念及三种使用方法

    技术2022-07-11  135

    map的概念

    map 的基本介绍 map key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合,基本语法 var map 变量名  map[keytype]valuetypekey 可以是什么类型 golang 中的 map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只包含前面几个类型的 接口, 结构体, 数组通常 key 为 int 、string注意: slice, map 还有 function 不可以,因为这几个没法用 == 来判断valuetype 可以是什么类型 valuetype 的类型和 key 基本一样通常为: 数字(整数,浮点数),string,,map,struct
    map 声明的举例: var a map[string]stringvar a map[string]intvar a map[int]stringvar a map[string]map[string]string注意:声明是不会分配内存的,初始化需要 make ,分配内存后才能赋值和使用。
    案例演示: //map的声明和注意事项 var a map[string]string //在使用map前,需要先make , make的作用就是给map分配数据空间 a = make(map[string]string, 10) a["no1"] = "宋江" //ok? a["no2"] = "吴用" //ok? a["no1"] = "武松" //ok? a["no3"] = "吴用" //ok? fmt.Println(a) 输出结果:

    对上面代码的说明 map 在使用前一定要 makemap 的 key 是不能重复,如果重复了,则以最后这个 key-value 为准map 的 value 是可以相同的. map 的 key-value 是无序make 内置函数数目


    map的三种使用方法

    方式 1 --map的声明 var a map[string]string -- 在使用map前,需要先make , make的作用就是给map分配数据空间 a = make(map[string]string, 10) 方式 2 cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "天津" cities["no3"] = "上海" fmt.Println(cities) 输出:

    方式 3 heroes := map[string]string{ "hero1" : "小卤蛋", "hero2" : "瑶瑶公主", "hero3" : "吉吉国王", } heroes["hero4"] = "高地虎" fmt.Println("heroes=", heroes) 输出:


    应用案例:

    比如:我们要存放 3 个学生信息, 每个学生有 name sex 信息 studentMap := make(map[string]map[string]string) studentMap["stu01"] = make(map[string]string, 3) studentMap["stu01"]["name"] = "tom" studentMap["stu01"]["sex"] = "男" studentMap["stu01"]["address"] = "北京长安街" studentMap["stu02"] = make(map[string]string, 3) //这句话不能少!! studentMap["stu02"]["name"] = "mary" studentMap["stu02"]["sex"] = "女" studentMap["stu02"]["address"] = "上海黄浦江" fmt.Println(studentMap) fmt.Println(studentMap["stu02"]) 输出:

    Processed: 0.009, SQL: 9