当前位置: 首页 > news >正文

《Go语言圣经》map

《Go语言圣经》map

禁止取址

  • 禁止取址:map 中的元素不是变量,无法进行取址操作(如 &ages["bob"])。因为 map 可能随元素增加重新分配内存,导致地址失效。

nil map

  • 向 nil map 存入元素会触发 panic(如 ages["carol"] = 21),因此必须先使用 make() 创建 map。

存在性检查

  • map 的下标语法可返回两个值(如 age, ok := ages["bob"]),第二个布尔值 ok 用于判断元素是否存在,常用于条件判断。

实现集合(Set)

  • Go 语言没有内置 Set 类型,但可用 map[string]bool 替代。通过键的唯一性去重,例如 dedup 程序通过 seen[line] = true 标记已存在的行。
func main() {seen := make(map[string]bool) // a set of stringsinput := bufio.NewScanner(os.Stdin)for input.Scan() {line := input.Text()if !seen[line] {seen[line] = truefmt.Println(line)}}if err := input.Err(); err != nil {fmt.Fprintf(os.Stderr, "dedup: %v\n", err)os.Exit(1)}
}

嵌套 map

  • Map的value类型也可以是一个聚合类型,比如是一个map或slice。在下面的代码中,graph 这个 map 的key类型是一个字符串,value类型map[string]bool代表一个字符串集合。从概念上讲,graph将一个字符串类型的key映射到一组相关的字符串集合,它们指向新的graph的key。
  • 其中addEdge函数惰性初始化map是一个惯用方式,也就是说在每个值首次作为key时才初始化。hasEdge函数显示了如何让map的零值也能正常工作;即使from到to的边不存在,graph[from][to]依然可以返回一个有意义的结果。
var graph = make(map[string]map[string]bool)
func addEdge(from, to string) {edges := graph[from]if edges == nil {edges = make(map[string]bool)graph[from] = edges}edges[to] = true
}
func hasEdge(from, to string)bool {return graph[from][to]
}
http://www.lqws.cn/news/444295.html

相关文章:

  • C#的泛型和匿名类型
  • Nacos:微服务架构的神经中枢与配置大脑
  • 413. 等差数列划分
  • day09——Java基础项目(ATM系统)
  • Github 热点项目 [特殊字符]PHP性能革命!FrankenPHP让Laravel/Symfony飞起来!
  • 目标检测之YOLOV11自定义数据预处理——从原始标注到YOLO-OBB格式转换与验证
  • SecureCRT 安装、破解、汉化及配色方案优化指南
  • OpenSSL引擎 + PKCS11 + SoftHSM2认证
  • 【技术管理的第一次转身】从认知到落地的12个实战模块
  • 【算力网络】算网安全
  • MySQL: Invalid use of group function
  • Redis 的优势有哪些,它是CP 还是 AP?CAP 理论又是什么?
  • Java中的守护线程与非守护线程
  • 用 STM32 HAL/LL + Arduino 混合编程
  • LeetCode 662. 二叉树的最大宽度
  • F接口基础.go
  • JETBRAINS IDE 开发环境自定义设置快捷键
  • 单服务器部署多个Discuz! X3.5站点并独立Redis配置方案
  • redux以及react-redux
  • 使用springboot实现过滤敏感词功能
  • c++ STL---vector使用
  • 6.19_JAVA_微服务
  • Kernel K-means:让K-means在非线性空间“大显身手”
  • 煤矿井下Modbus转Profibus网关的传感器与PLC互联解决方案
  • 基于keepalived、vip实现高可用nginx (centos)
  • TensorFlow+CNN垃圾分类深度学习全流程实战教程
  • 【目标检测】IOU的概念与Python实例解析
  • Qt蓝图式技能编辑器状态机模块设计与实现
  • Datawhale 网络爬虫技术入门第2次笔记
  • CD45.【C++ Dev】STL库的list的使用