Go 语言 中 map 是一个 key(索引)和 value(值)形式的无序的集合,也可以称为关联数组或字典,Golang 中的 map 能够快速根据给定 key,找到对应的 value 的数据结构。
Golang 的 map 的 key 可以是任何可以使用 == 进行比较的 数据类型,比如 int、string、bool 等,value 可以是任意的类型。
map 是一个无序的数据结构,因此同一个 map,每次遍历获取的顺序很可能是不一致的。
var mapName map[keyType]valueType
参数 | 描述 |
---|---|
var | 声明变量使用的关键字。 |
mapName | 声明的 map 变量的变量名。 |
map | 声明 map 变量的关键字。 |
keyType | map 的键的类型。 |
valueType | map 的值的类型。 |
声明一个 变量 名为 mapName, key 为 keyType 类型,value 为 valueType 类型的 map。
创建 map 时,需指定 map 的 key 的类型和 value 的类型
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//创建map时,需指定map的key的类型和value的类型
herosMap := map[string]string{
"hero1":"宋江",
"hero2":"卢俊义",
"hero3":"吴用",
}
fmt.Println(herosMap)
}
程序运行后,控制台输出如下:
我们创建了一个有三个元素的 map,map 的 key 和 value 都是 string 类型,map 直接赋值使用的是 key : value 的形式。
使用 TypeOf() 函数,获取map类型
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用 TypeOf() 函数,获取map类型
herosMap := map[string]string{
"hero1":"宋江",
"hero2":"卢俊义",
"hero3":"吴用",
}
fmt.Println(reflect.TypeOf(herosMap))
}
程序运行后,控制台输出如下:
我们创建了一个 key 和 value 都是 string 类型的 map,接着我们使用 TypeOf 函数,获取该变量的类型,输出了 map[string]string,即是一个 key 和 value 都是string 类型的 map。
使用 key,可以访问 map 元素
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用 key,可以访问map元素
herosMap := map[string]string{
"hero1":"宋江",
"hero2":"卢俊义",
"hero3":"吴用",
}
fmt.Println(herosMap["hero2"])
}
程序运行后,控制台输出如下:
map 元素的访问,只能使用 key 来访问。
Go 语言中 map 是一个 key(索引)和 value(值)形式的无序的集合,也可以称为关联数组或字典,Golang 中的 map 能够快速根据给定 key,找到对应的 value 的数据结构。Go 语言 map 声明语法:
var mapName map[keyType]valueType