Go 声明和初始化map
示例
您可以使用关键字定义映射map,后跟关键字的类型和值:
//键是整数,值是整数。 var m1 map[int]int //初始化为nil //键是字符串,值是整数。 var m2 map[string]int //初始化为nil
映射是引用类型,一旦确定他们有一个零值的nil。写入nil映射将发生恐慌,而读取将始终返回零值。
要初始化映射,请使用make函数:
m := make(map[string]int)
使用的两参数形式make,可以为映射指定初始输入容量,从而覆盖默认容量:
m := make(map[string]int, 30)
另外,您可以声明一个映射,将其初始化为零值,然后在以后为其分配一个文字值,如果您将该结构编组为json,从而在返回时生成一个空映射,则将有帮助。
m := make(map[string]int, 0)
您也可以制作映射并使用大括号({})设置其初始值。
var m map[string]int = map[string]int{"Foo": 20, "Bar": 30} fmt.Println(m["Foo"]) //输出20
以下所有语句导致该变量绑定到相同的值。
//声明,初始化为零值,然后分配一个文字值。 var m map[string]int m = map[string]int{} //通过文字值声明和初始化。 var m = map[string]int{} //通过简短的变量声明进行声明,并使用文字值进行初始化。 m := map[string]int{}
我们还可以使用映射文字来创建带有一些初始键/值对的新映射。
密钥类型可以是任何可比较的类型。值得注意的是,这不包括函数,映射和切片。值类型可以是任何类型,包括自定义类型或interface{}。
type Person struct { FirstName string LastName string } //通过简短的变量声明进行声明,并使用make进行初始化。 m := make(map[string]Person) //声明,初始化为零值,然后分配一个文字值。 var m map[string]Person m = map[string]Person{} //通过文字值声明和初始化。 var m = map[string]Person{} //通过简短的变量声明进行声明,并使用文字值进行初始化。 m := map[string]Person{}