一、概念
在Go语言中,Map是一种特殊的数据结构,它由一对无序的数据项组成,被称为键值对(Key-value Pair)。其中的一项是键(Key),另外一项是值(Value), Map通过把键映射到值来进行访问,这种方式可以加快数据查找的速度。所以,Map通常也被称作字典(Dictionary)或哈希表(Hash table) ,本文统一称为“字典"。
二、字典的声明
字典也是一种引用数据类型,在声明字典时,除了要定义字典名,还要指定“键”类型和“值”类型,“键”类型要使用一对方括号“[ ]”括起来。字典一般声明格式如下:
var mapName map[keyType]valueType
说明:
- (1)字典名的命名规则和变量名相同,遵循标识符命名规则。
- (2)不要给字典指定长度,字典的长度会在初始化或创建过程中动态增长。
- (3) Key必须是支持比较运算(==、!=)的数据类型,比如整型、浮点型、指针、数组、结构体、接口等,而不能是函数、字典、切片这几种类型。
- (4)Value类型可以是Go语言的任何基本数据类型。
三、字典的初始化和创建
字典声明好后必须经过初始化或创建才能使用,未初始化或创建的字典值为nil。可以使用“{}”操作符对字典进行初始化,或使用make()函数来创建字典。初始化或创建后,就可以使用“=”操作符向字典动态增添数据项了。
例如,下面的操作语句编译时会出错:
var map1 map[ string ]int
map1["key1"]= 1
出错的原因是虽然声明了字典map1,但mapl没有被初始化,所以系统并没有给它分配存储空间,也就不能向mapl中添加数据项了。
下面的操作语句是正确的:
var map1 map[string]int {}
map1["key1"]= 1
上面的操作语句正确,因为在声明字典map1的同时使用“{}”操作符对字典进行了初始化,也就意味着系统给map1分配了存储空间,当然就可以使用“=”操作符向mapl添加数据项了。
下面的操作也是可行的:
var map1 map[ string ] int
map1 = make(map[string]int)
map1["key1"]= 1
这里首先声明字典map1,然后使用make()函数来创建map1,make函数操作的实质就是给map1分配存储空间,所以make后也可以使用“=”操作符向map1添加数据项。
四、字典的访问和操作
字典是通过Key来访问Value的,访问格式如下:
Value = mapName[Key]
字典使用键值的访问形式和数组使用下标的访问形式有些类似,其实数组可以看作是一个键值类型为整型的字典。访问以后就可以对字典中的键值对进行查找或删除操作了。
1、字典项查找
在Go语言中,要从字典中查找一个特定的键值对,可以通过下面语句来实现:
v,OK := mapName[Key]
这条语句执行后,如果查找的Key值存在,则将Key对应的Value值赋予v,OK为true,反之,如果Key不存在,则v等于0,OK为false。
2、字典项删除
内置函数delete(),用于删除容器内的元素。文章来源:https://www.toymoban.com/news/detail-525880.html
delete(map1, "key1")
上面语句表示从map1中删除键值为“key1”的键值对,如果这个健不存在,那么什么也不会发生,也不会产生什么副作用。但是如果传入的Map变量值是nil,该调用将会导致程序出现异常。文章来源地址https://www.toymoban.com/news/detail-525880.html
到了这里,关于Go语言程序设计(六)字典(映射)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!