内容简介:我们可以像遍历数据那样对字段类型数据进行遍历:这种遍历模式和我们在 PHP 中通过当然,我们还可以借助匿名变量只获取字典的值:
遍历字典
我们可以像遍历数据那样对字段类型数据进行遍历:
testMap := map[string]int{ "one": 1, "two": 2, "three": 3, } for key, value := range testMap { fmt.Println(key, value) }
这种遍历模式和我们在 PHP 中通过 foreach
对关联数组进行遍历很像,上述代码输出结果是:
three 3 one 1 two 2
当然,我们还可以借助匿名变量只获取字典的值:
for _, value := range testMap { fmt.Println(value) }
或者像这样只获取字典的键名:
for key := range testMap { fmt.Println(key) }
键值对调
所谓键值对调指的是交换字典的键和值,在 PHP 关联数组中,有内置数组函数 array_flip
来实现类似的功能,在 Go 语言中,我们需要手动编写代码来实现,比如我们要对调 testMap
字典的键值,可以这么做:
invMap := make(map[int] string, 3) for k, v := range testMap { invMap[v] = k } for k, v := range invMap { fmt.Println(k, v) }
上述代码的打印结果是:
3 three 1 one 2 two
字典排序
在上篇教程中,我们提到过 Go 语言的字典不同于 PHP 的关联数组,是一个无序集合,如果你想要对字典进行排序,可以通过分别为字典的键和值创建切片,然后通过对切片进行 排序 来实现,换句话说,如果要对字典按照键进行排序,可以这么做:
keys := make([]string, 0) for k, _ := range testMap { keys = append(keys, k) } sort.Strings(keys) // 对键进行排序 fmt.Println("Sorted map by key:") for _, k := range keys { fmt.Println(k, testMap[k]) }
上述代码打印结果是:
Sorted map by key: one 1 three 3 two 2
该结果是按照键名在字母表中的排序进行升序排序的结果。
如果要对字典按照值进行排序,可以这么做:
values := make([]int, 0) for _, v := range testMap { values = append(values, v) } sort.Ints(values) // 对值进行排序 fmt.Println("Sorted map by value:") for _, v := range values { fmt.Println(invMap[v], v) }
这里我们借助了之前创建的 invMap
通过字典的值反查对应的键,上述代码打印结果如下:
Sorted map by value: one 1 two 2 three 3
该结果是按照键值对应数字大小进行升序排序的结果。
另外,你可能已经注意到我们在对切片进行排序时,使用了 Go 语言内置的 sort 包,这个包提供了一系列对切片和用户自定义集合进行排序的函数。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Go 语言函数式编程系列教程(九) —— 数据类型篇:数组切片的创建和遍历
- 数组常见的遍历循环方法、数组的循环遍历的效率对比
- C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除
- Js遍历数组总结
- 遍历
- 遍历 DOM 注意点
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。