温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go语言基础中字典类型的遍历和排序如何理解

发布时间:2022-01-17 16:14:20 来源:亿速云 阅读:162 作者:kk 栏目:大数据

这期内容当中小编将会给大家带来有关Go语言基础中字典类型的遍历和排序如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

go是什么

golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标机器而无需额外的依赖,所以golang的性能优于其他的解释性语言,且可以在golang中使用goroutine来实现并发性,它提供了一个非常优雅的goroutine调度程序系统,可以很容易地生成数百万个goroutine。

遍历字典

我们可以像遍历数据那样对字段类型数据进行遍历:

testMap := map[string]int{    "one": 1,    "two": 2,    "three": 3,}
for key, value := range testMap {    fmt.Println(key, value)}

这种遍历模式和我们在 PHP 中通过 foreach 对关联数组进行遍历很像,上述代码输出结果是:

three 3one 1two 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 three1 one2 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 1three 3two 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 1two 2three 3

该结果是按照键值对应数字大小进行升序排序的结果。

另外,你可能已经注意到我们在对切片进行排序时,使用了 Go 语言内置的 sort 包,这个包提供了一系列对切片和用户自定义集合进行排序的函数。

上述就是小编为大家分享的Go语言基础中字典类型的遍历和排序如何理解了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI