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

14、做中学 | 初二上期 Golang集合Map

在这里插入图片描述

一、认识Map

1. 会议室

会议室来了一群人,他们根据桌子上的名字,进行对号入座、、、

如果把会议室比作Map,桌子上的名字比作key、开会的人对应value,是不是就可以清晰一些!

2. Map概念

知道了map是通过key,去对应value的一种数据结构,知道了大概意思,接下来看下Map介绍!

Map是一种key-value无序的数据结构,又称为字段或者关联数组。 其中key为索引,value为指向的数据。比如在会议室里,你根据纸牌上的名字问李白,李白会进行回复!

3. 声明Map

Map和其它数据一样,先进行声明后使用

声明格式如下

var 命令名称 map[keyType]valueType

keyType可以有哪些类型

  1. 字符串 string
  2. 数字
  3. bool
  4. 指针
  5. channel
  6. 接口
  7. 结构体
  8. 数组

通常keyType为:int、string

PS: slice切片、map集合、function方法不可以作为keyType,因为这几个没法用==进行判断

valueType类型基本和keyType类似,通常为:数字(整数、浮点数)、string、struct

Map声明举例

var num [string]intvar name [string]string

PS:声明不会分配内存,初始化需要make(),分配内存后才能赋值和使用。

二、使用Map

了解了Map大概含义,又学会了如何进行声明Map,那么可以使用Map进行操作数据了!

1. 初始化Map

初始化Map有三种方式,具体如下

package mainimport "fmt"func main() {// 方式一 创建map 无指定容量,容量为0,根据存储元素自动扩容var cities1 map[string]string = make(map[string]string)cities1["C1"] = "北京"fmt.Println(cities1)// map[C1:北京]// 方式二 创建map 指定容量,容量为5var cities2 map[string]string = make(map[string]string, 5)cities2["C2"] = "上海"fmt.Println(cities2)// map[C2:上海]// 方式三 创建map 直接进行赋值var cities3 map[string]string = map[string]string{"C3": "广州",}fmt.Println(cities3)// map[C3:广州]
}

2. 操作Map数据

新增key的时候,如果Map里没有这个key,则进行新增,已经有这个key,则按最新的进行修改。

package mainimport "fmt"func main() {// 方式一 创建map 无指定容量,容量为0,根据存储元素自动扩容var cities1 map[string]string = make(map[string]string)cities1["C1"] = "北京"fmt.Println(cities1)// map[C1:北京]// 无则添加  有则修改// 修改cities1["C1"] = "上海"fmt.Println(cities1)// map[C1:上海]// 添加cities1["C2"] = "深圳"fmt.Println(cities1)// map[C1:上海 C2:深圳]// 删除 根据key进行删除delete(cities1, "C2")fmt.Println(cities1)// map[C1:上海]
}

3. 遍历Map

遍历的时候使用for-range结构

package mainimport "fmt"func main() {// 方式一 创建map 无指定容量,容量为0,根据存储元素自动扩容var cities1 map[string]string = make(map[string]string)cities1["C1"] = "北京"fmt.Println(cities1)// map[C1:北京]// 添加cities1["C2"] = "深圳"fmt.Println(cities1)// map[C1:上海 C2:深圳]// 添加cities1["C3"] = "上海"fmt.Println(cities1)// map[C1:上海 C2:深圳]for key, value := range cities1 {fmt.Println(key, value)}// C3 上海// C1 北京// C2 深圳// map的key是无序的}

三、Map切片

还记得上篇的切片内容吗?切片是一种引用类型,存储的是切片内容的地址!

PS: 切片类型,可以理解变体的数组,存储的是切片的逻辑地址。(数组、地址)

package mainimport "fmt"func main() {// map切片var mapSlice []map[string]string = make([]map[string]string, 2)mapSlice[0] = make(map[string]string)mapSlice[0]["C1"] = "北京"mapSlice[0]["C2"] = "深圳"mapSlice[1] = make(map[string]string)mapSlice[1]["C1"] = "北京"mapSlice[1]["C2"] = "深圳"fmt.Println(mapSlice)// [map[C1:北京 C2:深圳] map[C1:北京 C2:深圳]]
}

本篇进行学习Map内容,Map为key-value数据结构,key为无序键,通过key进行检索和删除对应的value!

请存储“十二中学,二班张三、李四,三班王五、赵六同学”,并进行遍历

package mainimport "fmt"func main() {// 存储“十二中学,二班张三、李四,三班王五、赵六同学”,并进行遍历// 声明学校Map 需求为存储俩个班级,初始化长度为2var school map[string]map[string]string = make(map[string]map[string]string, 2)// 声明班级Map 需求为存储俩个学生,初始化长度为2// 二班var classTwo map[string]string = make(map[string]string, 2)classTwo["xs_001"] = "张三"classTwo["xs_002"] = "李四"school["class_002"] = classTwo// 三班var classThree map[string]string = make(map[string]string, 2)classThree["xs_001"] = "王五"classThree["xs_002"] = "赵六"school["class_003"] = classThree// 输出学校、班级、学生信息for classKey, classValue := range school {fmt.Println("班级编号classKey=", classKey)for studentKey, studentValue := range classValue {fmt.Println("\t学生编号studentKey=", studentKey, "\t学生姓名studentValue=", studentValue)}}// 班级编号classKey= class_002//    学生编号studentKey= xs_001 	学生姓名studentValue= 张三//    学生编号studentKey= xs_002 	学生姓名studentValue= 李四// 班级编号classKey= class_003//    学生编号studentKey= xs_001 	学生姓名studentValue= 王五//    学生编号studentKey= xs_002 	学生姓名studentValue= 赵六
}
http://www.dtcms.com/a/554380.html

相关文章:

  • 做网站前置审批建设银行北京东四支行网站
  • 合规与体验的平衡:多区域身份验证适配中的模块化架构设计案例
  • 更换网站标题网站设计建设合同
  • 怎么用wordpress 建站工业产品设计效果图
  • DeepSeek-OCR
  • LeeCode 141. 环形链表
  • 网站建设费用说明建设一个网站
  • 博山做网站公司渝中网站建设
  • 孤能子视角:基于“N(EI+N(EI))“路径EIS理论人工智能定义
  • 汝南网站建设网站建设维护工作
  • 网站建设项目内控单公司网站优化外包
  • 西青做网站wordpress 标签修改
  • 网页模板怎么做网站wordpress去视频广告插件
  • 华为云iot消息积压问题
  • 简单网站页面设计制作链接的app的软件有哪些
  • Qt功能QSortFilterProxyModel指南
  • RAPID:基于逆强化学习的无人机视觉导航鲁棒且敏捷规划器
  • 免费个人网站模版ps手机网站 ui
  • 东莞网站优化服务公司建网站龙
  • Rust数据类型(下):复合类型详解
  • 【一阶段分析】文生图提示词笔记
  • 0成本get可信域名:dpdns.org公益域名获取全攻略
  • WordPress建影视站电商品牌推广方案
  • 站长工具关键词南京外贸网站建设案例
  • ESP32-P4-Function-EV-Board例程编译报错解决记录
  • Hierholzer 算法
  • 一文读懂分辨率:从概念到硬件应用,解锁视觉体验新高度
  • ppt图标网站链接怎么做珠海做网站哪间好
  • 上海网站开发招聘响应式网站和自适应网站
  • 蓝图网站建设网站开发推荐书籍