【概念】
    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. 浅析ASCII、Unicode和UTF-8三种常见字符编码

    什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...

  2. Linux使用Public Key方式远程登录

    一.前言: ssh远程登录密码认证的方式有三种,password.Keyboard Interactive.Public Key 前面两种方式就是密码认证,含义都是一样大同小异.第三种是登录方式最安全 ...

  3. android弹力效果菜单、组件化项目、电影票选座控件的源码

    Android精选源码 android启动扫一扫和收付款的小部件源码 android弹力效果的抽屉菜单源码 对RecyclerView Item做动画 源码 android类似QQ空间,微信朋友圈,微 ...

  4. SecureCRT连接虚拟机中的Linux系统(Ubuntu)_Linux教程

    有道云笔记链接地址: https://note.youdao.com/share/?id=826781e7ca1fd1223f6a43f4dc2c9b5d&type=note#/

  5. Spring框架学习笔记(8)——AspectJ实现AOP

    使用代理对象实现AOP虽然可以满足需求,但是较为复杂,而Spring提供一种简单的实现AOP的方法AspectJ 同样的计算器的DEMO 首先配置applicationContext.xml < ...

  6. WPF 文本滚动效果 渐变效果

    <DockPanel> <StackPanel DockPanel.Dock="Bottom" VerticalAlignment="Bottom&qu ...

  7. 使用phpMyAdmin批量修改Mysql数据表前缀的方法

    多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分.而如何批量修改已有数据库的前缀名呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍 ...

  8. 从数据库、代码和服务器对PHP网站Mysql做性能优化

    数据库优化是PHP面试几乎都会被问到的事情,也是我们工作中应该注意的事情,当然,如果是小网站无所谓优化不优化,网站访问量大了自然会暴漏数据库的瓶颈,这个瓶颈是各方面问题综合导致的,下面我们来做下数据库 ...

  9. CSS3 background-size 属性

    定义和用法 background-size 属性规定背景图像的尺寸. 默认值: auto 继承性: no 版本: CSS3 JavaScript 语法: object.style.background ...

  10. Python3 的序列

    序列 1.根据列表.元组.字符串的共同点把它们统称为序列(他们都是兄弟呀) 1)都可以通过索引来的到每一个元素 2)默认索引值都是从零开始(Python也支持负数索引) 3)都可以通过分片(切片)的方 ...