美文网首页
go语言学习(6)--Map

go语言学习(6)--Map

作者: 神奇大叶子 | 来源:发表于2018-08-03 23:21 被阅读9次

声明一个 map


m := map[string]string{
        "name":     "神奇大叶子",
        "age":      "26",
        "language": "golang",
    }
m2 := make(map[string]string) // map[]
var m3 map[string]string // map[]
fmt.Println(m, m2, m3)

三种声明方式,前文说道的,推荐用 make, 这里指出一下, make 创建的是空 map,var 声明的没赋值的是 nil
看段代码

fmt.Println(m2 == nil, m3 == nil)
false    true

两者是有区别的,一定要注意
下面讲讲遍历

遍历一个 map

for key, value := range m {
        fmt.Println(key + " => " + value)
    }
    
/**
name => 神奇大叶子
age => 26
language => golang
*/

获得一个 value和删除一个 value

java一样,go内部的 key 也是通过 hash 得到的
要想得到一个 value很简单

name:= m["name"]

// 神奇大叶子

这里有个小问题,要是我key写错了怎么办,通常其他语言会报错,找不到 key对吧,看看go里是怎么样的

name1:= m["name1"]
fmt.Println(name1)

返回了一个空,不是 nil, 而是一个空
那怎么判断 map有没有这个 key呢,和前面的 file读文件一样

if name1, ok := m["name1"]; ok {
    fmt.Println(name1)
} else {
    fmt.Println("Key not exist")
}

map是有两个返回值的,一个是 value,一个是一个 bool类型,true代表有这个key

删除一个元素

fmt.Println("Deleting values")
delete(m, "age")
age, ok := m["age"]
fmt.Println(age, ok)

总结

  • map 使用哈希表,必须可以比较相等
  • 除了 slice,map,function 的内建类型,都可以作为 key, 这是语言内部实现的,不用像 java 一样自己重写 hash 方法
  • Struct 类型里面不包含上述字段的,也可以作为key

上述代码均已上传至 github, 欢迎 star
https://github.com/yejunyu/golearn


image

相关文章

  • go语言学习(6)--Map

    声明一个 map 三种声明方式,前文说道的,推荐用 make, 这里指出一下, make 创建的是空 map,va...

  • Go语言探索 - 11(原创)

    Go语言基础系列博客用到的所有示例代码 上一篇文章主要学习了Go语言的切片以及Map。本篇文章主要学习的是Go语言...

  • Go语言探索 - 10(原创)

    上一篇文章主要学习了Go语言的结构体以及结构体指针,本篇文章主要学习Go语言的切片以及Map。 Go语言数组的长度...

  • 第九章:Go语言映射类型map

    1. map概述 Go语言中map字典类型时散列表(hash table)的实现,因为Go语言中将map中的每个键...

  • Go语言——Map分析

    Go语言——Map分析 go\src\runtime\hashmap.go 简介 map就是一个hash表。数据被...

  • 10.map

    Go语言基础之map | Golang Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 ...

  • go语言学习总结

    1、go语言的map和c++中的map有什么区别? go语言中的map是hash_table,和c++中uno...

  • Golang之Map源码

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

  • Go语言高并发Map解决方案

    Go语言高并发Map解决方案 Go语言基础库中的map不是并发安全的,不过基于读写锁可以实现线程安全;不过在Go1...

  • GO语言Map

网友评论

      本文标题:go语言学习(6)--Map

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