map 类似python语言中的dict(字典类型),以key-value形式存储数据

  • Key必须是支持==!=比较运算的类型,不可以是函数,map或slice

  • map查找比线性搜素快很多,但比使用索引访问数据的类型慢100倍

  • map使用make()函数创建,支持 :=赋值的简单写法

    //基本操作
    func main() {
    var m map[int]string //定义一个map变量
    m = map[int]string{} //第一种方式
    m = make(map[int]string) //第二种方式:使用make
    m := make(map[int]string) //第三种方式make直接初始化
    m[1] = "ok" //赋值一对key-value
    a := m[1] //获取一个key对应的value值
    delete(m, 1) //删除map中的某一个key
    fmt.Println(m)
    fmt.Println(m)
    fmt.Println(a)
    fmt.Println(m)
    }
    /*output
    map_init----> map[]
    map_add----> map[1:ok]
    map_get----> ok
    map_del----> map[]
    */

嵌套map: 类似python中的嵌套字典,取值,赋值时需要层层递进 ,且每次赋值时需要对内层map执行make初始化。

  • 示例代码

    package main
    import "fmt" func main() {
    var m map[int]map[int]string //嵌套字典
    m = make(map[int]map[int]string) //初始化map--最外层
    m[1] = make(map[int]string) //make初始化嵌套字典,第一个键对应的map类型
    m[1][1] = "ok" //key1_value1赋值
    b, ok := m[1][1] //使用多返回值,第二值返回值时bool类型,如果前一个有返回值,返回true,反之返回false
    fmt.Println(b, ok)
    fmt.Println(m)
    a, ok := m[2][1] //由于key2,对应的value2赋值前没有make初始化,所以,
    fmt.Println(a, ok)
    if !ok {
    m[2] = make(map[int]string)
    }
    m[2][1] = "Good"
    a, ok = m[2][1]
    fmt.Println(a, ok)
    fmt.Println(m)
    } /*输出
    a, ok---> ok true
    m ---> map[1:map[1:ok]]
    a, ok---> false
    a, ok---> Good true //初始化后
    */

for 迭代操作,类似python,dict操作,for k,v in dic.

  • 示例代码

    //for 迭代操作slice
    package main
    import "fmt" func main() {
    sum := make([]map[int]string, 5) //初始化一个slice,元素是map类型
    for i := range sum {
    sum[i] = make(map[int]string, 1)
    sum[i][1] = "ok"
    fmt.Println(sum[i])
    }
    fmt.Println(sum)
    } /*输出
    i=0---> map[1:ok]
    i=1---> map[1:ok]
    i=2---> map[1:ok]
    i=3---> map[1:ok]
    i=4---> map[1:ok]
    sum---> [map[1:ok] map[1:ok] map[1:ok] map[1:ok] map[1:ok]]
    */

map,间接排序,通过slice,对key进行排序。

  • 示例代码

    //间接排序,对key进行排序
    package main import "fmt"
    import "sort" //排序包 func main() {
    m := map[int]string{1: "a", 2: "b", 3: "c", 4: "d"} //这是一个map类型
    s := make([]int, len(m)) //这是一个slice类型
    i := 0
    for k := range m {
    s[i] = k
    i ++
    }
    sort.Ints(s)
    fmt.Println(s)
    }
    /*输出
    [1 2 3 4]
    */

golang基础--map字典的更多相关文章

  1. GoLang基础数据类型--->字典(map)详解

    GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ...

  2. GoLang基础数据类型---字典

    Map 是 Go 中的内置类型,它将键与值绑定到一起.可以通过键获取相应的值. 如何创建 map? 可以通过将键和值的类型传递给内置函数 make 来创建一个 map.语法为:make(map[Key ...

  3. golang 基础 map及工厂函数

    Map是一种数据结构,是一个集合,用于存储一系列无序的键值对.它基于键存储的,键就像一个索引一样,这也是Map强大的地方,可以快速快速检索数据,键指向与该键关联的值. 内部实现 Map是基于 散列表 ...

  4. Java基础关于Map(字典)的方法使用

    Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...

  5. Golang基础教程——map使用篇

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法. map这个数据结构我们经常使用,存储的是key-value的键 ...

  6. Golang 基础之基础语法梳理 (三)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...

  7. golang基础知识之encoding/json package

    golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...

  8. Golang基础之函数

    golang基础之函数 1.为什么需要函数? 有些相同的代码可能出现多次,如果不进行封装,那么多次写入到程序中,会造成程序冗余,并且可读性降低 2.什么是函数 为完成某些特定功能的程序指令集合称为函数 ...

  9. Golang 基础之基础语法梳理 (一)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第一章节 Golang 基础之基础语法梳理 (一) Gol ...

随机推荐

  1. EasyUI 让dialog中的treegrid的列头固定

    先上效果: 最主要是在treegrid要加上"fit:true "如果不加那么就会用diglog的滚动条,导致treegrid的头就没办法固定. Code<div id=&q ...

  2. Sql查询两个时间段有重叠的记录

    这个问题看上去简单,但是想了很久,最后发现,自己的思路有点乱. 下面四条时间段都和最上面那个有重叠的关系,就是这么个意思. 这里是问题的答案: 2个时间: a_start, a_end b_start ...

  3. LeetCode139:Word Break

    题目: Given a string s and a dictionary of words dict, determine if s can be segmented into a space-se ...

  4. JS 中的数据类型转换

    转成字符串 String 1. 使用 toString方法 这种方法可以将 number, boolean, object,array,function 转化为字符串,但是无法转换 null, und ...

  5. c#实现AOP

    AOP:面向切面编程,通过预编译方式或运行期动态代理实现程序功能的中统一处理业务逻辑的一种技术,比较常见的场景是:日志记录,错误捕获.性能监控等 AOP详解:https://www.cnblogs.c ...

  6. python 函数中使用全局变量

    python 函数中如果需要使用全局变量,需要使用 global + 变量名 进行声明, 如果不声明,那么就是重新定义一个局部变量,并不会改变全局变量的值 n [1]: a = 3 In [2]: d ...

  7. jzoj4424

    20%:暴力枚舉每一條邊有沒有被選到,然後使用并查集判斷聯通性 這樣子有20分,但是我考試寫掛了所以1分也沒有 100%:這道題2000的數據範圍,使用指數級搜索會tle,需要更加好的方法 這道題中, ...

  8. Breadth-first Search-690. Employee Importance

    You are given a data structure of employee information, which includes the employee's unique id, his ...

  9. 用xshell ssh连接测试服务器时候出的问题

    问题还原:用ssh连接测试服务器 给我结结实实报了个错 FBIwarning: ------------------------------------------------------------ ...

  10. [Swift实际操作]七、常见概念-(10)使用UserDefaults和归档方式存取用户数据实际操作

    在项目开发之中,你会经常需要将一些数据存储在本地,以便记录用户生产的数据或操作习惯.在项目文件夹上带点击鼠标右键.弹出右键菜单.本文将为你演示,存储用户数据的两种常用方式. 选择菜单中的创建新文件选项 ...