Go语言map

Go语言map教程

Go 语言 中 map 是一个 key(索引)和 value(值)形式的无序的集合,也可以称为关联数组或字典,Golang 中的 map 能够快速根据给定 key,找到对应的 value 的数据结构。

Golang 的 map 的 key 可以是任何可以使用 == 进行比较的 数据类型,比如 intstringbool 等,value 可以是任意的类型。

map 是一个无序的数据结构,因此同一个 map,每次遍历获取的顺序很可能是不一致的。

Go语言map声明

语法

var mapName map[keyType]valueType

参数

参数 描述
var 声明变量使用的关键字。
mapName 声明的 map 变量的变量名。
map 声明 map 变量的关键字。
keyType map 的键的类型。
valueType map 的值的类型。

说明

声明一个 变量 名为 mapName, key 为 keyType 类型,value 为 valueType 类型的 map。

案例

创建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) }

程序运行后,控制台输出如下:

61 golang map.png

我们创建了一个有三个元素的 map,map 的 key 和 value 都是 string 类型,map 直接赋值使用的是 key : value 的形式。

获取map类型

使用 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)) }

程序运行后,控制台输出如下:

62 golang map.png

我们创建了一个 key 和 value 都是 string 类型的 map,接着我们使用 TypeOf 函数,获取该变量的类型,输出了 map[string]string,即是一个 key 和 value 都是string 类型的 map。

访问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"]) }

程序运行后,控制台输出如下:

63 golang map.png

map 元素的访问,只能使用 key 来访问。

Go语言map总结

Go 语言中 map 是一个 key(索引)和 value(值)形式的无序的集合,也可以称为关联数组或字典,Golang 中的 map 能够快速根据给定 key,找到对应的 value 的数据结构。Go 语言 map 声明语法:

var mapName map[keyType]valueType