Map简介:

key-value的数据结构,又叫字典或关联数组

Map数据结构:

map是引用类型

写法:var map1 map[keytype]valuetype

一:字典声明

注意:声明是不会分配内存的,初始化需要make

所以:可以简写为 test :=make(map[string]int,10)

   --> 创建一个test字典: key类型为string,value类型为int,长度为10.  (如果超出会panic,index out of range)

var map1 map[keytype]valuetype
var a map[string]string
var a map[string]int
var a map[int]string

var a map[string]map[string]string

var a map[string]int
a = make(map[string]int,10)
a["abc"] = 200
a["abc"] = 1200
a["hello"] = 222

二:Map操作

var c map[string]string = map[string]string{"hi":"word"}
c["cc"] = "aaa"

插入:

a[“hello”] = “world”

查找:

//字典查找:通过key查找val.
// --返回2个元素,一个是val,一个是布尔值//字典查找key时,如果只指定一个返回值,那找不到就是0
//这种方法,不好确定,如果val是0呢? 那就尴尬了
Val,exist:= a[“hello”]if exist{fmt.Printf("val=%d\n",ok)
}else {fmt.Printf("not found %s\n",val)
}

遍历:

for k,v :=range a{fmt.Println("for",k,v)
}

删除:

//a字典
//hello is key
delete(a,"hello")

长度:len(a)

示例:函数传递字典

func test2(a map[string]int)  {a["one"] = 134
}
func mian(){
//map 是引用类型,所有会修改原有map
a := make(map[string]int,10)
test2(a)
}

三:map中创建切片

栗子1:

func test4()  {aa := make([]map[int]int, 5)for i := 0; i < 5; i++ {aa[i] = make(map[int]int)aa[i][2] = 2}fmt.Println("test4",aa)
}
>>>
test4 [map[2:2] map[2:2] map[2:2] map[2:2] map[2:2]]

栗子2:

func test3()  {//创建切片,//切片里面放置map//默认map都是nil,需要赋值s:=make([]map[string]int,10)for i:=0;i<len(s);i++{//赋值初始化//100是map的容量.如果超了。底层会自动扩容s[i] = make(map[string]int,100)}s[0]["aaa"]=100s[0]["acc"]=100s[0]["1aa"]=100s[2]["ccc"]=100fmt.Println("sss",s)
}
>>>
sss [map[aaa:100 acc:100 1aa:100] map[] map[ccc:100] map[] map[] map[] map[] map[] map[] map[]]

四:Map排序

  1. 先获取所有key,把key排序

  2. 按照拍好序的key,进行遍历

var keys []stringfor k, v := range a {fmt.Printf("a[%s] = %d\n", k, v)keys = append(keys, k)
}sort.Strings(keys)
for _, k := range keys {fmt.Printf("Sort,a[%s]=%d\n", k, a[k])
}

声明是不会分配内存的,初始化需要make

转载于:https://blog.51cto.com/12765315/2051934

Go(4 [Map])相关推荐

  1. Map的分类和不同的应用场景

    java为数据结构中的映射定义了一个接口java.util.Map; 它有四个实现类,分别是HashMap,Hashtable,LinkedHashMap和TreeMap 可能很多人只使用过HashM ...

  2. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  3. Go 学习笔记(67)— Go 并发安全字典 sync.Map

    1. 并发不安全的 map Go 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的. 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是 ...

  4. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  5. 将request中的所有参数存放到自定义的map中

    /*** <获取参数map>* * @return 参数map* @throws Exception */protected Map<String, Object> getPa ...

  6. Map再整理,从底层源码探究HashMap

    前言 本文为对Map集合的再一次整理.内容包括:Map HashMap LinkedHashMap TreeHashMap HashTable ConcurrentHashMap Map Map< ...

  7. Java集合详解之Map

    一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...

  8. 网络模型mAP计算实现代码

    网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...

  9. 2021年大数据常用语言Scala(二十二):函数式编程 映射 map

    目录 映射 | map 用法 案例一 案例二 映射  map 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的.因为进行数据计算的时候,就是一个将一种数据类型转换为另 ...

  10. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象

    目录 Map对象 不可变Map 可变Map Map基本操作 Map对象 Map可以称之为映射.它是由键值对组成的集合.在scala中,Map也分为不可变Map和可变Map. 不可变Map 定义 语法 ...

最新文章

  1. P1283 平板涂色
  2. Coroutine in Java - Quasar Fiber实现--转载
  3. Linux下编译vtk的java版本,Ubuntu 16.04 编译VTK7.1
  4. 树莓派各版本配置对比
  5. [jQuery] 你知道自定义事件吗?jQuery里的fire函数是什么意思,什么时候用?
  6. 漫步数学分析番外六(上)
  7. GMTC 大前端时代前端监控的最佳实践 1
  8. perl 序列化_对Perl的热爱团结了多元化的社区
  9. OpenShift 4 - Knative教程 (5) Eventing之Source和Sink
  10. 背景虚化_背景虚化的效果用手机怎么拍?原来这样简单
  11. 你真的懂JavaScript基础类型吗
  12. http中响应状态码表示的意义?
  13. 0302借软件工程触IT
  14. Android 四大组件学习之ContentProvider一
  15. configure: error: You requested LIBYUV but not found...die
  16. win10连不上网,“网络重置”后,网络适配器出现感叹号,右下角WLAN消失,网络连接是空白。
  17. 谈谈令你印象深刻的技术问题
  18. 网络篇 思科设备的登陆方式07
  19. HTTP抓包神器---Fiddler
  20. EPLAN 3D图自动生成2D安装版图

热门文章

  1. 第 6 章 认知吝啬鬼
  2. 打通版微社区(5):部署DZ3.2
  3. 0917变量类型注意点
  4. [转]使用Visual C#制作可伸缩个性化窗体
  5. Eclipse自定义文档注释和方法注释
  6. Lampp Xampp配置SSL及自动http重定向https
  7. idea 模块jdk依赖总是自动变_解决IDEA中导入新的maven依赖后Language Level自动重置问题...
  8. 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹
  9. 准备入行Web前端,又担心适不适合,怎么办?
  10. 生产是什么意思_俗话说:“牛遇无春年,出力好耕田”是啥意思?有什么道理?...