Go语言集合的用法
Go 语言的集合称为映射(map),它是一种无序的键值对(key-value)的集合,集合是通过键(key)来快速检索值(value)的,键(key)类似于索引,它指向值(value)的数据。
Go 语言的集合语法定义如下:
定义集合一共划分为 3 种方式:只定义、定义并赋值、使用 make() 函数定义,它们的使用方式如下:
在一个集合中,所有键值对(key-value)在定义的时候已设置了相应数据类型,换句话说,一个集合的所有键(key)或所有值(value)都是同一种数据类型,如果键值对(key-value)的数据类型不相符,程序将提示异常信息,示例如下:
如果删除集合中某个键值对(key-value),可以使用内置函数方法 delete() 实现,内置函数方法 delete() 只适用于集合,它是删除集合元素的特有函数,示例如下:
集合的定义与使用
Go 语言的集合在其他编程语言中也称为字典(Python)、hash 或 HashTable 等,它们在数据结构上都是相同的,只不过名称不一样而已。Go 语言的集合语法定义如下:
// 定义方式1,只定义
var name map[keytype]valuetype
name = map[keytype]valuetype{}
// 简写
var name = map[keytype]valuetype{}
// 定义方式2,定义并赋值
var name = map[keytype]valuetype{key: value}
// 定义方式3,使用make()函数定义
var name map[keytype]valuetype
name = make(map[keytype]valuetype)
// 简写
name := make(map[keytype]valuetype)
集合是使用关键字 map 定义的,语法说明如下:
- name 用于设置集合变量的名称;
- keytype 用于设置键(key)的数据类型;
- valuetype 用于设置值(value)的数据类型。
定义集合一共划分为 3 种方式:只定义、定义并赋值、使用 make() 函数定义,它们的使用方式如下:
package main
import (
"fmt"
)
func main() {
// 只定义
var m1 = map[string]string{}
m1["name"] = "Tom"
fmt.Printf("集合m1:%v\n", m1)
// 定义并赋值
var m2 = map[string]string{"name": "Lily"}
fmt.Printf("集合m2:%v\n", m2)
// 使用make()函数定义
m3 := make(map[string]string)
m3["name"] = "Tim"
fmt.Printf("集合m3:%v\n", m3)
}
运行上述代码,运行结果为:
集合m1:map[name:Tom]
集合m2:map[name:Lily]
集合m3:map[name:Tim]
在一个集合中,所有键值对(key-value)在定义的时候已设置了相应数据类型,换句话说,一个集合的所有键(key)或所有值(value)都是同一种数据类型,如果键值对(key-value)的数据类型不相符,程序将提示异常信息,示例如下:
package main
import (
"fmt"
)
func main() {
var m1 = map[string]string{}
m1["name"] = 10
fmt.Printf("集合m1:%v\n", m1)
}
运行上述代码,程序将提示数据类型不匹配:
cannot use 10(type untyped int)as type string in assignment
删除集合元素
当集合定义之后,只要通过 m[key]=value 方式就能实现集合元素的新增或修改,如果键(key)不在集合里面,就对该集合新增键值对;如果键(key)已在集合中,则对原有的键(key)进行修改。如果删除集合中某个键值对(key-value),可以使用内置函数方法 delete() 实现,内置函数方法 delete() 只适用于集合,它是删除集合元素的特有函数,示例如下:
package main
import "fmt"
func main() {
var m1 = map[string]string{}
m1["name"] = "Tom"
m1["age"] = "20"
m1["addr"] = "GZ"
fmt.Printf("集合m1的数据:%v\n", m1)
// 删除key=addr的数据
delete(m1, "addr")
fmt.Printf("集合m1的数据:%v\n", m1)
}
运行上述代码,运行结果为:
集合m1的数据:map[addr:GZ age:20 name:Tom]
集合m1的数据:map[age:20 name:Tom]
ICP备案:
公安联网备案: