【概念】
    1- map 是引用类型的
    2- 声明方式
        var map1 map[keytype]valuetype    
        例如:var map1 map[string]int
    3- map是可以动态自增长的
    4- 未初始化的map的值是nil
    5- 可以是任意用==或者!=操作符比较的类型,比如string,int,float。不常用的还有指针和接口类型也可以。切片和结构体不行(如果要用结构体做key,需要做变通,使用提供Key(),Hash()方法)
    6- value可以是任意值
    7- map传递给函数的代价很小,在32位机器上占4个字节,在64位机器上占用8个字节,无论实际存储了多少数据。
        备注:在map中查找比线性查找快,但是比数组和切片的索引中直接读取要慢100倍,在乎性能请使用切片或数组
    8- 不要使用new来构造map,永远使用make来构造map
        备注:若使用了new()分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取得了它的地址
 
 
【map容量】
    map的长度是动态的,它不存在固定长度和限制最大长度,但是我们也可以标明map的初始容量:make(map[int]string, cap),出于性能考虑还是应该在大容量和快速扩张的map中标明初始化容量
 
 
【map的常用操作】
    1- 测试键值对是否存在
            备注:map[key]  有两个返回值,第一个是该map键对应的值,第二个返回值是True(该键对应有值)或False(该键对应没有值)
 _,ok := map[key]
if _,ok := map[key];ok{
// do something
}
package main
func main(){
mf := make(map[int]string,2)
mf[1] = "hello"
mf[2] = "world" // 测试键值是否存在
if _,ok := mf[1];ok{
fmt.Printtf("key %d exists")
}else{
fmt.Printf("key %d unexists")
} // 删除键值
delete(mf,1)
}
    2- 删除键值对
            delete(mf, 1)
 
 
【map的for-range输出值】
    map既不是按照key的顺序排列的,也不是按照value的值排列的,每次输出都是随机
 package main

 import "fmt"

 func main(){
mf := map[int]string{1:"hello",2:"world"}
for key := range mf{
// 每次运行输出的顺序都不同
fmt.Printf("%d = %s",key,mf[key])
}
}
 

package main

func main(){
// map的值是一个函数
mf := map[int]func() int{
1:func()int{return 10},
2:func()int{return 20},
} // map的值是一个切片
mf1 := make(map[int][]string)
mf2 := make(map[int]*[]string)
}
  【学习参考处:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md】

Go笔记-map的更多相关文章

  1. golang笔记——map

    通过 new 创建的引用类型对象是不完整创建,比如 map,它仅分配了字典类型本身所需的内存(指针包装),而没有分配键值存储内存,也没有初始化散列桶等内部属性,因此无法工作,如下代码就是错误的: p ...

  2. 集合用法笔记-Map用法

    一.Map遍历 Map<String, String> map = new HashMap<String, String>(); map.put("1", ...

  3. Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...

  4. python学习笔记 map&&reduce

    ---恢复内容开始--- 1.map 1)map其实相当对吧运算符进行一个抽象,返回的是一个对象,但是这里不知道为什么不可以对一个map返回变量打印两次,难道是因为回收了? def f(x): ret ...

  5. Python学习笔记 - map reduce

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- def f(x): return x * x r = map(f, [1, 2, 3, 4, 5, 6, ...

  6. python练习笔记——map | sum | pow 的应用

    1 函数简要 map 函数  | sum 函数  |  pow函数  | lambda函数 2 简要计算 2.1 1^2 + 2^2 + 3^2 .....9^2 方法1 print([pow(x,2 ...

  7. GO学习笔记 - map

    map是GO语言中的一种高级数据类型,特点是key和value对应,这和Delphi中的Dictionary一样!map的声明格式:map[key数据类型]value数据类型.使用map前,必须用ma ...

  8. Java学习笔记——Map接口

    Map接口 Map接口 Map接口中键和值一一映射. 可以通过键来获取值. 异常 NoSuchElementException:访问的值不存在 ClassCastException:对象类型错误 Un ...

  9. go语言笔记——map map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序

    示例 8.1 make_maps.go package main import "fmt" func main() { var mapLit map[string]int //va ...

随机推荐

  1. Windows下MYSQL读取文件为NULL

    只记录解决问题的方法. mysql 版本: 5.7.18 问题: 在执行mysql 函数load_file时,该函数将加载指定文件的内容,存储至相应字段.如: SELECT LOAD_FILE(&qu ...

  2. HDU 1233 还是畅通工程(模板——克鲁斯卡尔算法)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意描述: 输入n个城镇以及n*(n-1)/2条道路信息 计算并输出将所有城镇连通或者间接连通 ...

  3. HDU 2243 Knight Moves

    题目: A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find th ...

  4. DOM解析原理示意

    DOM解析原理示意  

  5. thinkphp开发微信公众号时,验证基本配置提示请求url超时

    原因在index.php入口文件中必须有define('APP_NAME', 'Weixin'); 服务器url:http://bxu2713700584.my3w.com/Weixin/Index/ ...

  6. Node之简单的前后端交互

    node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...

  7. 邓_phpcms_数据库

    phpcms v9 数据表结构 在线版 PHPCMS V9 数据结构 (2010-12-28) 表 1 : v9_admin 管理员表 字段 类型 Null 默认 额外 注释 userid mediu ...

  8. 关于userInteractionEnabled的属性的理解

    userInteractionEnabled A Boolean value that determines whether user events are ignored and removed f ...

  9. windows安装xampp时出现,unable to realloc xxxxxxxx bytes

    摘录自:http://blog.csdn.net/lz610756247/article/details/70842166 Windows虚拟内存的设置 问题描述:由于开启虚拟内存会导致硬盘IO性能下 ...

  10. java.lang.reflect.InvocationTargetException

    java.lang.reflect.InvocationTargetException是什么情况?java.lang.reflect.InvocationTargetExceptionat sun.r ...