设为首页 加入收藏

TOP

Go语言map(二)
2018-11-30 14:09:13 】 浏览:309
Tags:语言 map
以出于性能的考虑,对于大的 map 或者会快速扩张的 map,即使只是大概知道容量,也最好先标明。

map的排序

map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序。

如果你想为 map 排序,需要将 key(或者 value)拷贝到一个切片,再对切片排序,然后可以使用切片的 for-range 方法打印出所有的 key 和 value。

在函数间传递Map

函数间传递Map是不会拷贝一个该Map的副本的,也就是说如果一个Map传递给一个函数,该函数对这个Map做了修改,那么这个Map的所有引用,都会感知到这个修改。

func main() {
    dict := map[string]int{"kevin": 40, "itbsl": 25}
    modify(dict)
    fmt.Println(dict["kevin"])
    fmt.Printf("main函数dict的地址为:   %p\n", dict)
}

func modify(dict map[string]int) {
    dict["kevin"] = 10
    fmt.Printf("modify函数dict的地址为: %p\n", dict)
}

输出结果为:

modify函数dict的地址为: 0xc000076120
10
main函数dict的地址为:   0xc000076120

上面这个例子输出的结果是10,也就是说已经被函数给修改了,可以证明传递的并不是一个Map的副本。这个特性和切片是类似的,这样就会更高,因为复制整个Map的代价太大了。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Kali Linux搭建Go语言环境 下一篇Golang 学习权威网站

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目