内容简介:我们可以像遍历数据那样对字段类型数据进行遍历:这种遍历模式和我们在 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 包,这个包提供了一系列对切片和用户自定义集合进行排序的函数。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Making Things See
Greg Borenstein / Make / 2012-2-3 / USD 39.99
Welcome to the Vision Revolution. With Microsoft's Kinect leading the way, you can now use 3D computer vision technology to build digital 3D models of people and objects that you can manipulate with g......一起来看看 《Making Things See》 这本书的介绍吧!