Golang Map (十二)|Go主题月

631 阅读1分钟

Golang 中 map 是一种无序的基于 键值对应 的数据结构,相当于其他编程语言中的字典hashHashTable 等。

key(索引)对应着 value(值),给定 key(索引) 就能够快速查询 对应 value(值)的数据结构。

map定义

map 的使用语法如下:

map[KeyType]ValueType

  • KeyType: 表示 的类型。
  • ValueType: 表示键对应的 的类型。

map 变量初始值为nil,需要内置函数make()分配内存:

make(map[KeyType]ValueType, [cap])

由于 map 的容量上限是可以动态增长,所以容量上限 cap 为可选参数。map 未初始化时值为 nil,使用函数 len() 可以获取其长度。

func main() {
    scoreMap := make(map[string]int)
    scoreMap["zhangsan"] = 90
    scoreMap["lisi"] = 100
    fmt.Println(scoreMap)           // map[lisi:100 zhangsan:90]
    fmt.Println(scoreMap["lisi"])   // 100
    fmt.Printf("type of a:%T\n", scoreMap)  // type of a:map[string]int
}

map也支持在声明的时候填充元素,例如:

func main() {
    userInfo := map[string]string{
        "username": "zhangsan",
        "password": "123456",
    }
    fmt.Println(userInfo)
}

map 使用

检查是否包含某个 key

value, isExist := map[key]

  • isExist 表示是否存在 不存在时为 false
  • value 为key 对应的值

遍历 map

注意: 遍历map的顺序 与 添加时的顺序无关

func main() {
    scoreMap := make(map[string]int)
    scoreMap["zhangsan"] = 90
    scoreMap["lisi"] = 100
    scoreMap["wangwu"] = 60
    for k, v := range scoreMap {
        fmt.Println(k, v)
    }
}

delete()函数删除键值对

delete(map, key) // map:删除键值对的map key:要删除的键