Golang:字典

作者: 与蟒唯舞 | 来源:发表于2017-12-22 11:49 被阅读37次
创建 map

可以通过将键和值的类型传递给内置函数 make 来创建一个 map。语法为:make(map[type of key]type of value)

personSalary := make(map[string]int)  

上面的代码创建了一个名为 personSalary 的 map。其中键的类型为 string,值的类型为 int

map 的零值为 nil。试图给一个 nil map 添加元素会导致运行时错误。因此 map 必须通过 make 来初始化。

package main

import (  
    "fmt"
)

func main() {  
    var personSalary map[string]int
    if personSalary == nil {
        fmt.Println("map is nil. Going to make one.")
        personSalary = make(map[string]int)
    }
}

上面的程序中,personSalary 为 nil,因此使用 make 来初始化它。

访问 map 中的元素

如果访问的键不存在,map 会返回值类型的零值。

package main

import (  
    "fmt"
)

func main() {  
    personSalary := map[string]int{
        "steve": 12000,
        "jamie": 15000,
    }
    personSalary["mike"] = 9000
    employee := "jamie"
    fmt.Println("Salary of", employee, "is", personSalary[employee])
    fmt.Println("Salary of joe is", personSalary["joe"])
}

上面的程序输出为:

Salary of jamie is 15000  
Salary of joe is 0  

如何检测一个键是否存在于一个 map 中呢?可以使用下面的语法:

value, ok := map[key]  

如果 ok 是 true,则键存在,value 被赋值为对应的值。如果 ok 为 false,则表示键不存在,value 被赋值为对应类型的零值。

map 是引用类型

与切片一样,map 是引用类型。当一个 map 赋值给一个新的变量,它们都指向同一个内部数据结构。因此改变其中一个也会影响到另一个。

比较 map

map 不能通过 == 操作符比较是否相等。== 操作符只能用来检测 map 是否为 nil

package main

func main() {  
    map1 := map[string]int{
        "one": 1,
        "two": 2,
    }

    map2 := map1

    if map1 == map2 {
    }
}

上面的程序将会报错:invalid operation: map1 == map2 (map can only be compared to nil)

相关文章

  • Golang:字典

    创建 map 可以通过将键和值的类型传递给内置函数 make 来创建一个 map。语法为:make(map[typ...

  • golang 字典map

     当在哈希表中查找某个与键值对应的元素值时,我们需要先把键值作为参数传给这个哈希表。哈希表会先用哈希函数(hash...

  • python中的dict和set

    一:字典dict python中的dict和golang中map的概念是一致的,称为“字典”。 dict可以用在需...

  • 12-GoLang字典

    什么是字典 和数组以及切片一样, 字典是用来保存一组相同类型的数据的 数组和切片可以通过索引获得对应元素的值,数组...

  • Golang learning 字典 map

    字典 map

  • Go 学习之路:引用类型与值类型

    Golang中只有三种引用类型:slice(切片)、map(字典)、channel(管道); 引用类型 引用类型理...

  • Go 学习:引用类型与值类型

    Golang中只有三种引用类型:slice(切片)、map(字典)、channel(管道); 引用类型 引用类型理...

  • Go-Map

    go map golang中的map是一种(无序的)key-value形式的数据结构,类似python中的字典,默...

  • map字典

    golang的map实现并不是像c++一样使用红黑树,而是使用了hashmap,用数组来实现。 map 是字典的概...

  • 搜索词推荐

    使用golang开发,借助字典树结构+堆的数据结构,实现了us级别的搜索前缀词和热门搜索词的获取。 相关链接dem...

网友评论

    本文标题:Golang:字典

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