go语法基础与其他语言对比学习(11) | 青训营

113 阅读2分钟

映射

map的引入

  • 映射(map), Go语言中内置的一种类型,它将键值对相关联,我们可以通过键 key来获取对应的值 value。 类似其它语言的集合
  • 基本语法:var map变量名 map[keytype]valuetype 如:var a map[int]string
  • 跟其他语言不同处依旧是类型后置,map则是(key,value)后置,与Java不同的是Java用(keytype,valuetype)以及泛型<key,value>来限制map的key,value类型。go则是在变量名后在[]里写上key类型,且紧跟在其后直接写上value类型。
  • key、value的类型:bool、数字、string、指针、channel 、还可以是只包含前面几个类型的接口、结构体、数组 PS:key通常为int 、string类型,value通常为数字(整数、浮点数)、string、map、结构体
  • key:slice、map、function不可以(而Java里是可以以map继续作key的)
  • map原理(跟Java的hashmap基本一致)
    • map集合在使用前一定要make
    • map的key-value是无序的
    • key是不可以重复的,如果遇到重复,后一个value会替换前一个value
    • value可以重复的
package main
import "fmt"
func main(){
        //定义map变量:
        var a map[int]string
        //只声明map内存是没有分配空间
        //必须通过make函数进行初始化,才会分配空间:
        a = make(map[int]string,10) //map可以存放10个键值对
        //将键值对存入map中:
        a[20095452] = "张三"
        a[20095387] = "李四"
        a[20097291] = "王五"
        a[20095387] = "朱六"
        a[20096699] = "张三"
        //输出集合
        fmt.Println(a)
}

map的创建方式

  1. 方式1:定义map变量:var a map[int]string,只声明map内存是没有分配空间
  • 必须通过make函数进行初始化,才会分配空间
  • a = make(map[int]string,10),map可以存放10个键值
  1. 方式2: b := make(map[int]string),直接利用:=make来创建map类型,一步到位
  2. 方式3: c := map[int]string{        20095452 : "张三",      20098765 : "李四",   } ,类似创建数组用{}直接赋值,不过这个是key:value的方式来赋值。若在数组用这种形式,key为数组索引,value为该索引下所对应的元素值。