Golang Maps 数据类型(map)

 

map介绍

- 介绍:

map 是在 Go 中将值(value)与键(key)关联的内置类型。
通过相应的键可以获取到值。

等同于python中的字典(dict)

 

- map 属于引用类型:

map和 slices 类似,map 也是引用类型。
当 map 被赋值为一个新变量的时候,它们指向同一个内部数据结构。
因此,改变其中一个变量,就会影响到另一变量。

 

- map的相等性:

map 之间不能使用 == 操作符判断,== 只能用来检查 map 是否为 nil。

 

声明map(创建map)

- 创建map的语法:make(map[Tkey]Tvalue)

  - 示例: make(map[string]int)

    - 创建一个 key为string类型,值为int类型的map

 

- 声明map:

  - 语法: var 变量名 map[T-key]T-value

 

- 初始化:必须使用make初始化;

 

增删改查

- 增加:

  - 初始化后,直接增加:

    - 示例:

package main

import (
    "fmt"
)

func main() {
    personSalary := make(map[string]int)
    personSalary["steve"] = 12000
    personSalary["jamie"] = 15000
    personSalary["mike"] = 9000
    fmt.Println("personSalary map contents:", personSalary)
}

// 打印内容:personSalary map contents: map[steve:12000 jamie:15000 mike:9000]

 

  - 初始化时增加:

    - 示例:

package main

import (  
    "fmt"
)

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

// 打印内容:personSalary map contents: map[steve:12000 jamie:15000 mike:9000]

 

- 删除:

  - 语法:delete(map, key)   没有返回值;

  - 示例:

package main

import (  
    "fmt"
)

func main() {  
    personSalary := map[string]int{
        "steve": 12000,
        "jamie": 15000,
    }
    personSalary["mike"] = 9000
    fmt.Println("map before deletion", personSalary)
    delete(personSalary, "steve")
    fmt.Println("map after deletion", personSalary)

}

// 打印内容:
    map before deletion map[steve:12000 jamie:15000 mike:9000]
    map after deletion map[mike:9000 jamie:15000]

 

- 获取: 

  - 通过key直接取:

    - 语法: value, ok := 字典名["key"];ok: 当key存在的时候 返回 true,不存在返回 false,且 可以不写;

    - 示例:

package main

import (
    "fmt"
)

func main() {
    dict := map[int]string{
        1: "Python",
        2: "Linux",
        3: "Golang",
    }
    fmt.Println(dict[1])
    // value := dict[2]
    value, ok := dict[2]
    // var value int
    // value, ok := dict[4]
    fmt.Println(value, ok)

}

 

  - 获取map的长度:

    获取 map 的长度使用 len 函数。

 

  - for range 循环

package main

import (
    "fmt"
)

func main() {
    personSalary := map[string]int{
        "steve": 12000,
        "jamie": 15000,
    }
    personSalary["mike"] = 9000
    fmt.Println("All items of a map")
    for key, value := range personSalary {
        fmt.Printf("personSalary[%s] = %d\n", key, value)
    }

}

 

 

posted @ 2018-10-29 21:43  浮生凉年  阅读(3307)  评论(0编辑  收藏  举报