本文摘自网络,作者,侵删。
3. Go语言数据类型
上篇我们介绍了Go语言的切片类型,本篇我们了解一下Go语言的字典类型。主要如下:
3.4 字典
在Go语言中,字典类型的官方称谓是Map, 它是哈希表(Hash Table)的一个实现。
3.4.1 类型表示法
如果一个字典类型的键的类型为K,且元素的类型为T,那么用于表示这个字典类型的类型字面量:
map[K]T
字典类型声明中的元素类型可以是任意一个有效的Go语言数据类型(除了函数类型、字典类型或切片类型)。键的类型必须是可比较的。如果字典类型的键类型是接口类型,那么就要求在程序运行期间,该类型的字典值中的每一个键值的动态类型都必须是可比较的。否则在进行相应操作的时候会引发运行时异常。如下:
map[int]string//合法
map[string]struct{name, department string}//合法
map[string]interface{}//合法
map[[]int]string//不合法
map[map[int]string]string//不合法
3.4.2 值表示法
字典值可以由复合字面量来表示。
一个类型为map[string]bool的字典值:
map[string]bool{"Vim": true, "Emacs": true, "LiteIDE": true, "Notepad": false}
一个不包含任何键值对的空字典值:
map[string]bool{}
3.4.3 属性和基本操作
与指针类型和切片类型一样,字典类型是一个引用类型。与切片值相同,一个字典值总是会持有一个针对某个底层数据结构值的引用。
知识点:在Go语言中,只有“传值”而没有“传引用”。函数内部对参数值的改变是否会在该函数之外体现出来(或者说是否反映在该参数值的原值上),只取决于这个被改变的值的类型是值类型还是引用类型。
因为字典类型是引用类型,所以它的零值是nil。一个值为nil的字典类型的变量类似于一个长度为0的空字典。对它的读操作不会引起任何错误,但是对它的写操作(添加或删除键值对)将会引起一个运行时恐慌。一个未初始化的字典类型的变量的值就是nil。
相关阅读 >>
更多相关阅读请进入《Go》频道 >>

Go语言101
一个与时俱进的Go编程知识库。