Go语言学习6-字典类型


本文摘自网络,作者,侵删。

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水平

Golang语言社区】四川麻将随机初始化牌型结构

Golang leaf用的多吗

Golang底层是c语言吗?

Golang 几种字符串的连接方式

Go设计模式之工厂模式浅谈

Golang基础-内置数据结构

Golang反射机制

我的个人能力发展报告(2015-2019)

聊聊dubbo-Go-proxy的jtypes

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...