map一般是以库的方式提供,在C++和C#和JAVA中都需要引用相应的库而Go语言不需要引入库,可以直接方便使用

定义:map是一堆键值对的未排序集合。无序

1.声明变量:

  map的声明基本上没有多余的元素:

    var myMap map[string]PersonInfo //其中myMap是声明的map变量,string是键的类型,而PersonInfo则是所有存放的值的类型

    var 变量名 map[键类型] 值类型

        如:var test map[int] int

    申明时变量的默认值为nil也就是对应的0(bool类型对应false int类型对应0以此内推)

2.初始化://声明之后必须初始化才能使用

同样我们可以使用Go语言内置的make()函数来初始化一个新的map。

myMap = make(map[string] PersonInfo)//键类型为string 值类型为PersonInfo

myMap = make(map[string] PersonInfo,100) //表示初始存储能力为100

myMap = map[string]int{}

3.创建并初始化map 

myMap :=make(map[string]int)

   myMap := map[string]int{ 可加可不加}

   变量 := map[键类型][值类型]{赋值}

跟变量一样可以先申明初始化再辅助,也可以直接声明并初始化且赋值

4.key与value的限制:

  value可以是任意类型甚至于自己的结构组,key只能是可比较类型(支持==的类型)

5.新增 删除 更新 查询:

  新增:类似于python的字典,myMap["input"] = "Hi"  

  删除:delete(变量名,键名)

  更新(覆盖) myMap["input"] = "Hello"

  查询 :与数组切片类似 i :=m[键名]  得到键名对应的key

     i,ok := m[键名] 得到key和value

6.遍历:

  因为map是无序的,所以正常遍历的时候是随机输出

  但是有有序遍历的算法:

    将key抽出来,使用数组存储在对key数组进行排序后根据key数组输出value

7.函数传参map本身是引用类型,作为形参或者返回参数的时候,传递的是地址。

Go语言的map的更多相关文章

  1. go语言之map

    go语言的map就相当于python的dict 1.map的初始化 //创建map //k的类型是int,v的类型是string var test25_1 map[int]string fmt.Pri ...

  2. go语言学习--map的并发

    go提供了一种叫map的数据结构,可以翻译成映射,对应于其他语言的字典.哈希表.借助map,可以定义一个键和值,然后可以从map中获取.设置和删除这个值,尤其适合数据查找的场景.但是map的使用有一定 ...

  3. GO_05:GO语言基础map与函数

    1. map 1. 类似其它语言中的哈希表活着字典,以 key-value 形式存储数据 2. key 必须是支持 == 或 != 比较运算的类型,不可以是函数.map 或 slice 3. map ...

  4. GO语言基础map与函数

    1. map 1. 类似其它语言中的哈希表活着字典,以 key-value 形式存储数据 2. key 必须是支持 == 或 != 比较运算的类型,不可以是函数.map 或 slice 3. map ...

  5. 深度解密Go语言之 map

    目录 什么是 map 为什么要用 map map 的底层如何实现 map 内存模型 创建 map 哈希函数 key 定位过程 map 的两种 get 操作 如何进行扩容 map 的遍历 map 的赋值 ...

  6. 【Go语言】map在goroutine通信中的使用问题

    简介 本篇文章的主要内容是解决go语言map在使用中遇到的两个问题,对于初学者是不可避免的坑 一.cannot assign to struct field 当map中存在struct类型的成员,如果 ...

  7. Go语言的map如何判断key是否存在

    判断方式为value,ok := map[key], ok为true则存在 package main import "fmt" func main() { demo := map[ ...

  8. go语言学习--map中键值得删除

    测试 map1 中是否存在 key1: 在例子 8.1 中,我们已经见过可以使用 val1 = map1[key1] 的方法获取 key1 对应的值 val1.如果 map 中不存在 key1,val ...

  9. go语言学习--map类型的切片

    今天在项目中遇到了一个切片的map,记录下map切片的使用 package main import "fmt" func main() { // Version A: items ...

随机推荐

  1. C#串口通信:MSComm控件使用详解

    目  次MSComm控件两种处理通讯的方式CommPort属性RThreshold 属性CTSHolding 属性SThreshold 属性CDHolding 属性DSRHolding 属性Setti ...

  2. Chrome无法从该网站添加应用,扩展程序和用户脚本

    #开始 更新谷歌浏览器之后发现不能通过本地 crx文件安装离线插件了 网上找到的方法有两种 一个就是通过添加浏览器参数解决 但是这个方法我尝试之后失败了 第二个方法就是用工具安装 具体如何太麻烦了就没 ...

  3. Windows上面搭建FlutterAndroid运行环境

    1.下载安装JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.配置J ...

  4. 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数

    #include <stdio.h> int fun(int x) { int a, b, c; a = x / ; b = x % / ; c = x % ; if (x == a * ...

  5. 【jQuery基础】

    " 目录 #. 介绍 1. 优势 2. 版本 3. jQuery对象 #. 查找标签 1.  选择器 /. 基本选择器 /. 层级选择器 /. 基本筛选器 /. 使用jQuery实现弹框 / ...

  6. JDK8;HashMap:再散列解决hash冲突 ,源码分析和分析思路

    JDK8中的HashMap相对JDK7中的HashMap做了些优化. 接下来先通过官方的英文注释探究新HashMap的散列怎么实现 先不给源码,因为直接看源码肯定会晕,那么我们先从简单的概念先讲起   ...

  7. SpringBoot 系列

    https://my.oschina.net/xiedeshou?tab=newest&catalogId=5936801 SpringBoot | 第零章:前言 SpringBoot | 第 ...

  8. ASP.NET Core搭建多层网站架构【1-项目结构分层建立】

    2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[1-项目结构分层建立] 文章目录 此分支项目代码 ...

  9. vue 中 限制 input 输入数字、小数位数等

    限制小数位数 <input type="number" @keydown="handleInput2" placeholder="请输入或查看& ...

  10. SprintBoot学习(三)

    Thymeleaf模板引擎 1.thymeleaf是一个Java类库,,他是xml/xhtml/html5的模板引擎可以作为view层 2.themeleaf基本语法 引入thymeleaf < ...