Go语言map遍历

Go语言map遍历教程

Go 语言map 的遍历只能使用 for range 的形式,for range 循环返回的第一个是 map 的 key,返回的第二个是 map 的 value。

使用 for range 遍历 map,如果我们只使用一个返回参数接受,那么返回的是 map 的 key。因此 map 是无序的,因此同一个 map,每次遍历获取的结果的顺序很可能是不一致的。

for range循环遍历map

语法

for key, value := range mapName{ }

说明

使用 for range 循环遍历 变量 名为 mapName 的 map ,其中 key 是 map 的键,value 是 map 的 key 所对应的 值。

for range循环遍历map key

语法

for key := range mapName{ }

说明

使用 for range 循环遍历map 时 ,如果只使用一个返回值接受,那么返回的是 map 的 key。

for range循环遍历map value

语法

for _, value := range mapName{ }

说明

如果我们仅仅希望获取 map 的所有的元素,那么我们可以使用 _ 忽略 key 的值。

案例

for range循环遍历map

使用 for range 循环遍历 map,获取 map 的 KEY 和 VALUE

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用 for range 循环遍历 map,获取 map 的 KEY 和 VALUE mapHaiCoder := map[string]string{ "Server":"Golang", "JavaScript":"Vue", "Db":"Redis", } for key, value := range mapHaiCoder{ fmt.Println("Key =", key, "Value =", value) } }

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

69 golang map遍历.png

我们使用初始化的方式创建了一个有三个元素的 map,并使用 for range 循环的方式遍历该 map,获取了 map 的 key 和 value。

for range循环遍历map key

使用 for range 循环遍历 map 的所有的 key

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用 for range 循环遍历 map 的所有的 key mapHaiCoder := map[string]string{ "Server":"Golang", "JavaScript":"Vue", "Db":"Redis", } for key := range mapHaiCoder{ fmt.Println("Key =", key, "Value =", mapHaiCoder[key]) } }

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

70 golang map遍历.png

我们使用初始化的方式创建了一个有三个元素的 map,并使用 for range 循环的方式遍历该 map 的所有的 key,并使用 mapHaiCoder[key] 的形式获取 key 对应的 value。

for range循环遍历map value

如果我们仅仅希望获取 map 的所有的元素,那么我们可以使用 _ 忽略 key 的值

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //如果我们仅仅希望获取 map 的所有的元素,那么我们可以使用 _ 忽略 key 的值 mapHaiCoder := map[string]string{ "Server":"Golang", "JavaScript":"Vue", "Db":"Redis", } for _, value := range mapHaiCoder{ fmt.Println("Value =", value) } }

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

71 golang map遍历.png

我们使用初始化的方式创建了一个有三个元素的 map,并使用 for range 循环的方式遍历该 map 的所有的 key,并使用 mapHaiCoder[key] 的形式获取 key 对应的 value。

map是无序的

使用 for range 循环多次遍历 map,获取 KEY 的顺序可能不一致

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用 for range 循环多次遍历 map,获取 KEY 的顺序可能不一致 mapHaiCoder := map[string]string{ "Server":"Golang", "JavaScript":"Vue", "Db":"Redis", } for key, value := range mapHaiCoder{ fmt.Println("Key =", key, "Value =", value) } fmt.Println("=====================================") for key, value := range mapHaiCoder{ fmt.Println("Key =", key, "Value =", value) } }

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

72 golang map遍历.png

我们使用初始化的方式创建了一个有三个元素的 map,并两次使用了 for range 循环的方式遍历该 map,我们发现第一次获取的 map 的 key 的顺序与第二次获取的 map 的 key 的顺序是不一致的,由此可以看出 map 是无序的。

Go语言map遍历总结

Go 语言中 map 的遍历只能使用 for range 的形式,for range 循环返回的第一个是 map 的 key,返回的第二个是 map 的 value。

使用 for range 遍历 map,如果我们只使用一个返回参数接受,那么返回的是 map 的 key。因此 map 是无序的,因此同一个 map,每次遍历获取的结果的顺序很可能是不一致的。for range 循环遍历 map 语法:

for key, value := range mapName{ }

for range 循环遍历 map key 语法:

for key := range mapName{ }