引入

【1】映射(map), Go语言中内置的一种类型,它将键值对相关联,我们可以通过键 key来获取对应的值 value。 类似其它语言的集合

【2】基本语法

var map变量名 map[keytype]valuetype

PS:key、value的类型:bool、数字、string、指针、channel 、还可以是只包含前面几个类型的接口、结构体、数组
PS:key通常为int 、string类型,value通常为数字(整数、浮点数)、string、map、结构体
PS:key:slice、map、function不可以

【3】代码:
map的特点:
(1)map集合在使用前一定要make
(2)map的key-value是无序的
(3)key是不可以重复的,如果遇到重复,后一个value会替换前一个value
(4)value可以重复的

package main
import "fmt"
func main(){//定义map变量:var a map[int]string//只声明map内存是没有分配空间//必须通过make函数进行初始化,才会分配空间:a = make(map[int]string,10) //map可以存放10个键值对//将键值对存入map中:a[20095452] = "张三"a[20095387] = "李四"a[20097291] = "王五"a[20095387] = "朱六"a[20096699] = "张三"//输出集合fmt.Println(a)
}

三种创建方式

 package main
import "fmt"
func main(){//方式1://定义map变量:var a map[int]string//只声明map内存是没有分配空间//必须通过make函数进行初始化,才会分配空间:a = make(map[int]string,10) //map可以存放10个键值对//将键值对存入map中:a[20095452] = "张三"a[20095387] = "李四"//输出集合fmt.Println(a)//方式2:b := make(map[int]string)b[20095452] = "张三"b[20095387] = "李四"fmt.Println(b)//方式3:c := map[int]string{20095452 : "张三",20098765 : "李四",}c[20095387] = "王五"fmt.Println(c)
}

map的CRUD操作

【1】增加和更新操作:
map[“key”]= value ——》 如果key还没有,就是增加,如果key存在就是修改。
【2】删除操作:
delete(map,“key”) , delete是一个内置函数,如果key存在,就删除该key-value,如果k的y不存在,不操作,但是也不会报错
【3】清空操作:
(1)如果我们要删除map的所有key ,没有一个专门的方法一次删除,可以遍历一下key,逐个删除
(2)或者map = make(…),make一个新的,让原来的成为垃圾,被gc回收
【4】查找操作:
value ,bool = map[key]
value为返回的value,bool为是否返回 ,要么true 要么false

package main
import "fmt"
func main(){//定义mapb := make(map[int]string)//增加:b[20095452] = "张三"b[20095387] = "李四"//修改:b[20095452] = "王五"//删除:delete(b,20095387)delete(b,20089546)fmt.Println(b)//查找:value,flag := b[200]fmt.Println(value)fmt.Println(flag)
}

【5】获取长度:len函数

【6】遍历:for-range

package main
import "fmt"
func main(){//定义mapb := make(map[int]string)//增加:b[20095452] = "张三"b[20095387] = "李四"b[20098833] = "王五"//获取长度:fmt.Println(len(b))//遍历:for k,v := range b {fmt.Printf("key为:%v value为%v \t",k,v)}fmt.Println("---------------------------")//加深难度:a := make(map[string]map[int]string)//赋值:a["班级1"] = make(map[int]string,3)a["班级1"][20096677] = "露露"a["班级1"][20098833] = "丽丽"a["班级1"][20097722] = "菲菲"a["班级2"] = make(map[int]string,3)a["班级2"][20089911] = "小明"a["班级2"][20085533] = "小龙"a["班级2"][20087244] = "小飞"for k1,v1:= range a {fmt.Println(k1)for k2,v2:= range v1{fmt.Printf("学生学号为:%v 学生姓名为%v \t",k2,v2)}fmt.Println()}
}

go map(映射)的概念、3种创建方式及map的CRUD操作相关推荐

  1. 线程池概念、线程池作用、线程池的四种创建方式

    线程池 1.1.什么是线程池? 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程.线程池中线程的数量通常完全取决于可用内存数量和应用程 ...

  2. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  3. 线程的三种创建方式以及代码实现

    线程和进程的概念 一个进程可以有多个线程 程序:是指令和数据的有序集合(静态的) 进程:是执行程序的一次执行过程(动态的),是系统资源分配的单位.在操作系统中运行的程序就是进程. 通常在一个进程中可以 ...

  4. 【Kubernetes 系列】详解 ConfigMap 九种创建方式

    作者:半身风雪 上一节:配置 Java 微服务 内容简介:上一节主要学习使用 Kubernetes ConfigMaps 和 Secrets 设置环境变量,本节我们将学习,创建ConfigMap 的1 ...

  5. Map集合中的两种取出方式keySet和entrySet

    /*map集合中的两种取出方式:1.Set<k> keySet:将map集合中所有的键存入到Set集合,因为Set具备迭代器.所有可用迭代方式取出所有的键,再根据get方法,获取每一个键对 ...

  6. SAP QM 04类型检验批的另外一种创建方式

    SAP QM 04类型检验批的另外一种创建方式 物料号:ZFG0003,是一个自制的成品.它的物料主数据的质量管理视图里激活了04检验类型,按设置是在工单入库的时候触发检验批的.如下图示: 'Cont ...

  7. java中字符串的创建_【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  8. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

  9. JavaScript对象的几种创建方式?

    **` JavaScript对象的几种创建方式? `**

最新文章

  1. 微软每年豪砸安全研发 10 亿美元,聊聊背后的技术密码
  2. python loading_MXNet Python Data Loading API
  3. 常见的CSS属性和值CascadingStyleSheets
  4. 10-表格添加、删除
  5. 服务器无线不能登录界面,Web认证无法跳转到登录页面
  6. python可视化水平双向箭头_python数据可视化第二弹
  7. 搞ACM的你伤不起(转)
  8. HTML5 API详解(17):Web SQL DataBase本地数据库
  9. EventBus 加强学习深入了解
  10. struts2文件上传,获取文件名和文件类型
  11. css 如何让盒子垂直居中,css 盒子垂直居中
  12. 如何在码云上面上传本地项目
  13. C# winform国际版,中英文转换
  14. 云栖社区2017中国开发者调查报告
  15. 高等数学:第十一章 无穷级数(2)函数的幂级数展开式、傅里叶级数
  16. 单选题计算机科学的奠基人是,计算机科学的奠基人是( )。
  17. mm1排队系统仿真matlab实验报告,matlab仿真实验报告_mm1排队系统仿真matlab实验报告资料...
  18. 第八章_集合(3)_Map集合Stream流
  19. 嘿!快跟C菌一起来看看这周都更新了些啥
  20. 忽略' scanf '的返回值,用属性warn_unused_result声明的疑问

热门文章

  1. xlwt什么版本支持xlsx的版本_Spring Framework Versions版本支持说明
  2. python stringvar函数_Tkinter 求助,怎么获取StringVar() 的值
  3. Kaggle 入门练习 -- Titanic
  4. 文本分析:吉利不裁员不降薪背后的真相是什么
  5. PyTorch随笔-3
  6. tensorflow随笔-条件循环控制(4)
  7. 【机器学习】NeuralProphet,这个时序工具包也太强了吧...
  8. 那些数学不好的程序员?最后都如何了(文末送书)
  9. 送给即将毕业的大学生:乔布斯在斯坦福的大学演讲
  10. 一些在NLP的面试中提问频率非常高的问题