厚土Go学习笔记 | 23. map字典的使用
时间:2022-05-06
本文章向大家介绍厚土Go学习笔记 | 23. map字典的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
map是一组键和值的组合。在map内是无序的。你可以随时加入或删除一个键及键对应的值。
想查看所有键值,使用range遍历好了。
想找到唯一的键值,那要使用键来得到值。
map的创建必须使用make
m := make(map [string]int)
我们可以把这个map当作是一组人的名字和年龄,然后这样写入键值。
m := make(map [string]int)
m["Anna"] = 16
m["Tom"] = 15
m["Smith"] = 17
直接打印map
fmt.Println(m)
运行结果
map[Anna:16 Tom:15 Smith:17]
如果需要挨个分析处理,那么需要遍历,并且判断后再加上处理语句。比如,我们给值为 17 的加一个特殊的显示标记“* --> ”
//遍历,分别处理
for k, v := range m {
if v == 17 {fmt.Print("* --> ")}
fmt.Println(k, v)
}
当然,你也可以直接对你感兴趣的map键调用。
m["Anna"] = 17
fmt.Println(m)
这个时候的打印输出就会发现,Anna的值也是 17 了。
如果,你只是想判断一下,map内是否已经有某个键了,可以这样写
kv, ok := m["anna"]
fmt.Println(kv, ok)
kv1, ok1 := m["Anna"]
fmt.Println(kv1, ok1)
查看输出的结果。比较就会发现,当键不存在时,返回的值为零值,而同时我们得到了一个 false 的检测结果。我们可以使用这个方法来判断map中某个键是否存在。
我们还需要知道,如何删除一个已经存在的元素。很简单的,只要直接 delete就行。像这样
delete(m, "Anna")
fmt.Println(m)
观察打印结果,发现 Anna 已经不见了。
完整代码
package main
import "fmt"
func main() {
m := make(map [string]int)
m["Anna"] = 16
m["Tom"] = 15
m["Smith"] = 17
fmt.Println(m)
//遍历,分别处理
for k, v := range m {
if v == 17 {fmt.Print("* --> ")}
fmt.Println(k, v)
}
m["Anna"] = 17
fmt.Println(m)
kv, ok := m["anna"]
fmt.Println(kv, ok)
kv1, ok1 := m["Anna"]
fmt.Println(kv1, ok1)
delete(m, "Anna")
fmt.Println(m)
}
运行结果
map[Anna:16 Tom:15 Smith:17]
Anna 16
Tom 15
* --> Smith 17
map[Anna:17 Tom:15 Smith:17]
0 false
17 true
map[Tom:15 Smith:17]
下面来展示一个复杂一点的例子。map元素值的类型是一个结构体。
package main
import (
"fmt"
)
type Vertex struct {
Lat, Long float64
}
var m map[string]Vertex
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
m["Bei Jing"] = Vertex{39.26, 115.25}
fmt.Println(m)
fmt.Println("--------I'm just a line.---------------")
for lat, _ := range m {
fmt.Println(lat, ":", m[lat].Lat, m[lat].Long)
}
delete(m, "Bei Jing")
fmt.Println(m)
}
运行结果
map[Bell Labs:{40.68433 -74.39967} Bei Jing:{39.26 115.25}]
--------I'm just a line.---------------
Bell Labs : 40.68433 -74.39967
Bei Jing : 39.26 115.25
map[Bell Labs:{40.68433 -74.39967}]
- wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:WINDOWSTEMP/wordpress-4.
- 数据库安全·数据加密
- Medium网友开发了一款应用程序 让学习算法和数据结构变得更有趣
- 数据库安全·Token 认证
- 数据库安全·用户/角色认证
- 防止在训练模型时信息丢失 用于TensorFlow、Keras和PyTorch的检查点教程
- 帝国cms如何调用栏目别名作为分类标题?[!--classname--]标签不能用
- 高级软件工程师(面试题)
- 高级软件工程师 2016-9月更新
- Httpclient 调用 HTTPS 加密通道的Restful服务
- 使用 Jersey 调用 Restful 服务
- 【学术】将吴恩达的第一个深度神经网络应用于泰坦尼克生存数据集
- 使用 HttpClient 调用 Restful 接口
- 元宵佳节:看Oracle技术粉们用SQL画团圆
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 机器学习模型部署—PMML
- 「文档数据库之争」MongoDB和CouchDB的比较
- 【Python】【爬虫】最近想买电脑,用Python爬取京东评论做个参考
- 新手如何快速入门Python
- 10行Python代码自动清理电脑内重复文件,解放双手!
- 模型评价指标—KS
- python 学习之:修饰器
- python 学习之:正则表达式(1)---- 可选函数参数
- PySpark——开启大数据分析师之路
- 一款直击痛点的优秀http框架,让我超高效率完成了和第三方接口的对接
- 强连通和连通算法在关联图谱中的应用
- PySpark SQL——SQL和pd.DataFrame的结合体
- 初识Kubernetes及快速安装
- 使用k8s部署springboot+redis简单应用
- React Ref 使用总结