【Golang系列】-map

2022-03-11

map
  • map 是一种key:value键值对的数据结构容器,map内部实现是哈希表(hash)
  • map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值
  • map是引用类型
map的语法格式

可以使用内建函数make也可以使用关键字map来定义map
//声明变量,默认map是nil

var map_variable map[key_data_type]value_data_type

//使用make函数

map_variable = make(map[key_daya_type]value_data_type)
  • map_variable:map变量名称
  • key_data_type:key的数据类型
  • value_data_type:值的数据类型

示例:

声明一个保存个人信息的map
package main

import (
    "fmt"
)

func main() {
    m1 := make(map[string]string)
    m1["name"] = "caolihui"
    m1["age"] = "30"
    m1["add"] = "北京"

    fmt.Println(m1)

    m2 := map[string]string{
        "add":  "天津",
        "age":  "31",
        "name": "caolihuim2",
    }
    fmt.Println(m2)
}

访问map:
package main

import (
    "fmt"
)

func main() {

    m2 := map[string]string{
        "add":  "天津",
        "age":  "31",
        "name": "caolihuim2",
    }
    name := m2["name"]
    age := m2["age"]
    add := m2["add"]
    fmt.Println(name, age, add)
}

判断某个键是否存在

有个判断map中键是否存在的特殊写法,格式:

value,ok:= map[key]

如果ok为true,就是存在,否则就是不存在
示例:

package main

import "fmt"

func main() {
    m2 := map[string]string{
        "add":  "天津",
        "age":  "31",
        "name": "caolihuim2",
    }
    v, ok := m2["add"]
    fmt.Println(v, ok)
}

结果:

天津 true
遍历map

可以使用for range循环进行map遍历,得到key 和value

遍历key
package main

import "fmt"

func main() {
    m2 := map[string]string{
        "add":  "天津",
        "age":  "31",
        "name": "caolihuim2",
    }
    for key := range m2 {
        fmt.Println(key)
    }
}

遍历key和vaule
package main

import "fmt"

func main() {
    m2 := map[string]string{
        "add":  "天津",
        "age":  "31",
        "name": "caolihuim2",
    }
    for key, value := range m2 {
        fmt.Println(key, value)
    }
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter06/dome01.go"
name caolihuim2
add 天津
age 31
[Done] exited with code=0 in 0.646 seconds