文章永久连接:https://tech.souyunku.com/?p=5316
map 又称哈希表,是一种一种无序的键值对的集合
map 最重要特点是通过 key 来快速检索数据,key 类似于索引,指向数据的值
Go 语言中的 map 也是一种集合,所以我们可以像迭代数组和切片那样迭代它
但在迭代时需要注意:map 是无序的,我们无法决定它的返回顺序,因为 map 是使用 hash 表来实现的
定义 map
1.使用内建函数 make 来定义 map
map_variable := make(map[key_data_type]value_data_type)
2. 使用 map 关键字来定义 map
这种方式声明的 map 默认是 nil
var map_variable map[key_data_type]value_data_type
如果不初始化 map,那么就会创建一个 nil map
nil map 不能用来存放键值对
范例
下面的范例演示了如何定义 map 和如何通过 键(key) 访问 map 中的元素
/**
* file: main.go
* author: 搜云库技术团队(tech.souyunku.com)
* Copyright © 2015-2065 tech.souyunku.com. All rights reserved.
*/
package main
import "fmt"
func main() {
var countryCapitalmap map[string]string
/* 创建集合 */
countryCapitalmap = make(map[string]string)
/* map 插入 key-value 对,各个国家对应的首都 */
countryCapitalmap["France"] = "Paris"
countryCapitalmap["Italy"] = "Rome"
countryCapitalmap["Japan"] = "Tokyo"
countryCapitalmap["India"] = "New Delhi"
/* 使用 key 输出 map 值 */
for country := range countryCapitalmap {
fmt.Println("Capital of",country,"is",countryCapitalmap[country])
}
/* 查看元素在集合中是否存在 */
captial, ok := countryCapitalmap["United States"]
/* 如果 ok 是 true, 则存在,否则不存在 */
if(ok){
fmt.Println("Capital of United States is", captial)
}else {
fmt.Println("Capital of United States is not present")
}
}
编译运行以上 Go 范例,输出结果如下
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of United States is not present
干货推荐
附录:GOlang 教程:系列文章
- 一、Go 语言基础教程
- 二、Go 语言 – 简介
- 三、Go 语言环境配置
- 四、Go 语言结构
- 五、Go 语言基础语法
- 六、Go 语言数据类型
- 七、Go 语言变量
- 八、Go 语言常量
- 九、Go 语言运算符
- 十、Go 语言条件语句
- 十一、Go 语言循环语句
- 十二、Go 语言函数
- 十三、Go 语言 – 变量作用域
- 十四、Go 语言 – 数组
- 十五、Go 语言 – 字符串
- 十六、Go 语言 – 指针
- 十七、Go 语言 – 结构体
- 十八、Go 语言 – 数据类型 interface
- 十九、Go 语言 – 切片(slice)
- 【当前读到】二十、Go 语言 – 哈希表(map)
- 二十一、Go 语言 – range 关键字
- 二十二、Go 语言 – 关键字 delete
- 二十三、Go 语言递归函数
- 二十四、Go 语言 – 类型转换
- 二十五、Go 语言 – 错误处理
- 二十六、Go 语言 – 开发工具
- 二十七、Go 语言 for 循环语句
- 二十八、Go 语言 – 多维数组
- 二十九、Go 语言 break 语句
- 三十、Go 语言 – 指向指针的指针
- 三十一、Go 语言 – 指针作为函数参数
- 三十二、Go 语言 goto 语句
- 三十三、Go 语言 if 语句
- 三十四、Go 语言函数值传递调用
- 三十五、Go 语言 for 循环嵌套
- 三十六、Go 语言 – 向函数传递数组
- 三十七、Go 语言 – 函数 – 引用传值
- 三十八、Go 语言 select 语句
- 三十九、Go 语言 if…else 语句
- 四十、Go 语言 switch 语句
- 四十一、Go 语言 – 闭包函数
- 四十二、Go 语言指针数组
- 四十三、Go 语言 if 语句嵌套
- 四十四、Go 语言 – 函数作为值
- 四十五、Go 语言函数方法
- 四十六、Go 语言 continue 语句