码迷,mamicode.com
首页 > 其他好文 > 详细

Go map

时间:2019-12-22 16:43:25      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:get   直接   内存   UNC   空值   else   写入   str   golang   

map 是 key - value 类型的数据结构

初始化

map 声明之后必须要初始化才能使用
初始化方法:

make

通过 make 可以分配内存空间,如果省略 size 的话,分配的空间会较少,当内存超出范围时会内存再分配
示例:

func main() {
    foo := make(map[string]string, 10)
    foo["key1"]= "value1"
    fmt.Printf("%v", foo)
}

直接初始化

声明时直接写入值

func newMap() {
    foo := map[string]string{
        "key1": "value1",
        "key2": "value2",
    }
    foo["key3"] = "value3"
    fmt.Printf("%v", foo)
}

多层 map

在使用多层 map 时,每一层 map 都要先初始化才能使用

直接初始化

直接初始化示例:

func twoMap(){
    foo := map[string]map[string]string{
        "outer_key1": {
            "inner_key1": "value1",
            "inner_key2": "value2",
        },
        "outer_key2": {
            "inner_key1": "value1",
        },
    }
    fmt.Printf("%v", foo)
}

没有初始化的内层 map 如果要使用还需要通过 make 的方式进行初始化

通过 make 初始化

make 初始化示例:

func twoMakeMap() {
    foo := make(map[string]map[string]string, 10)
    foo["outer_key1"] = make(map[string]string)
    foo["outer_key1"]["inner_key1"] = "value1"
    foo["outer_key1"]["inner_key2"] = "value2"
    foo["outer_key2"] = make(map[string]string)
    foo["outer_key2"]["inner_key1"] = "value1"
    fmt.Printf("%v", foo)
}

操作

插入 & 更新

在已经分配内存的前提下,更新时如果不存在相应 key 就会自动插入

func main() {
    foo := map[string]string{
        "key1": "value1",
    }
    foo["key1"] = "new_value1"
    foo["key2"] = "value2"
    fmt.Printf("%v", foo)
}

查找

map[key] 会返回两个值:取到的值和是否取到值,如果没有取到值会返回相应值的空值

func find() {
    foo := map[string]string {
        "key1": "value1",
    }
    key := "key1"
    value, get := foo[key]
    if get {
        fmt.Printf("%v", value)
    } else {
        fmt.Printf("cannot find key: %v\nvalue is '%v', type is %T", key, value, value)
    }
}

遍历

func main() {
    foo := map[string]string {
        "key1": "value1",
        "key2": "value2",
    }
    for k, v := range foo {
        fmt.Printf("key: %v,\nvalue: %v\n\n", k, v)
    }
}

delete

func delete(m map[Type]Type1, key Type)

Go map

标签:get   直接   内存   UNC   空值   else   写入   str   golang   

原文地址:https://www.cnblogs.com/dbf-/p/12080021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!