美文网首页
Go语言之集合(Map)

Go语言之集合(Map)

作者: 测试探索 | 来源:发表于2020-05-29 06:52 被阅读0次

map是Go中的内置类型,它将一个值与一个键关联起来,可以使用响应的键检索值
Map是一种无序的键值对的集合,Map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值

一:注意事项
  • map是无序的,每次打印出来的map都会不一样,必须通过key获取
  • map的长度是不固定的,也就是和slice一样,也是一种引用类型
  • 内置的len


    image.png
二:获取

value,ok := map[key]
根据key获取对应的value,如果key存在,value就是对应的数据,ok为true,如果key不要存在,value就是值类型的默认值,ok为false

三: 删除

如果key存在,直接删除数据,如果key不存在,删除失败

package main

import "fmt"

func main() {
    //1.创建map
    //只是声明,没有初始化,nil,如果不初始化map,那么就会创建一个nil map,nil map不能用来存放键值对
    var map1 map[int]string
    var map2 = make(map [int] string)
    var map3 = map[string] int {"Go":98,"Python":87,"java":79,"html":93}
    fmt.Println("map1",map1)
    fmt.Println("map2",map2)
    fmt.Println("map3",map3)

//  nil map
//  判断是否是nil
    fmt.Println("map1是否是nil:",map1 == nil)
    fmt.Println("map2是否是nil:",map2 == nil)
    fmt.Println("map3是否是nil:",map3 == nil)

//  3.存储键值对到map中
//  map[1]key = value
    map2[1] = "hello"
    map2[2] = "world"
    map2[3] = "王二狗"
    map2[4] = "rudy"
    map2[5] = "好好好"
    map2[6] = ""

//  获取数据
    fmt.Println("map2[4]的值是:",map2[4])
    fmt.Println("map2[40]的值是:",map2[40])

    v1,ok := map1[40]
    if ok {
        fmt.Println("map1[40]对应的数值是:",v1)
    } else {
        fmt.Println("map1[40]操作的key不存在,获取到的是零值")
    }

//  删除数据
    delete(map2,3)
    fmt.Println(map2)

}
//结果
map1 map[]
map2 map[]
map3 map[Go:98 Python:87 html:93 java:79]
map1是否是nil: true
map2是否是nil: false
map3是否是nil: false
map2[4]的值是: rudy
map2[40]的值是: 
map1[40]操作的key不存在,获取到的是零值
map[1:hello 2:world 4:rudy 5:好好好 6:]

三、遍历Map
package main

import (
    "fmt"
    "sort"
)

func main() {
    map1 := make(map [int] string )

    map1[5] = "hello"
    map1[6] = "world"
    map1[7] = "王二狗"
    map1[8] = "rudy"
    map1[9] = "好好好"

    for i,v := range map1 {
        fmt.Println(i,v)
    }

    fmt.Println("--------------------")
    for i:= 1;i<=len(map1);i++{
        fmt.Println(i,"--->",map1[i])
    }

    /*
    第二种方式
    1.获取所有的key--》切片/数组
    2.进行排序
    3.遍历key --》map[key]
     */
    keys := make([] int,0,len(map1))  //定义一个keys容量是map1的长度
    fmt.Println("one_keys ",keys)

    for k,_ := range map1{
        keys = append(keys,k)
    }
    fmt.Println("for_keys: ",keys)

//  排序
    sort.Ints(keys)
    fmt.Println(keys)
//  遍历key
    for _,key := range keys{
        fmt.Println(key,map1[key])
    }

}

相关文章

  • Go语言之集合(Map)

    map是Go中的内置类型,它将一个值与一个键关联起来,可以使用响应的键检索值Map是一种无序的键值对的集合,Map...

  • Golang之Map源码

    引用 深入 Go 的 Map 使用和实现原理 哈希表 深度解密Go语言之map Golang map 的底层实现 使用

  • 【Golang 基础】Go 语言的 Map

    Go 语言中的Map   Map 是一个无序的键值对数据集合,通过 key 快速检索数据。 通过 map[keyT...

  • Go语言Map(集合)

    Map 是一种无序的键值对的集合。 Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数...

  • Go学习笔记四(Map扩展)

    Map 与⼯厂模式 Map 的 value 可以是一个⽅法 实现Set Go 的内置集合中没有 Set 实现, 可...

  • 【go语言学习】映射map

    Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key-value对的集合。Go语言中的map...

  • 第03天(复合类型)_map的基本使用

    24_map的基本使用.go 25_map赋值.go 26_map遍历.go 27_map删除.go 28_map...

  • 九、Go语言map

    九、Go语言Map Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key ...

  • 2019-01-03

    Map集合 Map集合 1.1Map集合概念 Map集合是一种存放关系对象的对象的双列集合。 1.2Map集合的常...

  • Go语言--集合(Map)详解

    Go语言--集合(Map)详解 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有...

网友评论

      本文标题:Go语言之集合(Map)

      本文链接:https://www.haomeiwen.com/subject/ynptzhtx.html