映射 - Go 语言学习笔记

概述

Go语言中的 映射(map)是一种内置的数据结构,是一个用于存储一系列无序的键值对的集合。bash

映射里基于键来存储值,键就像索引同样,指向与该键关联的值。数据结构

建立和初始化

1. 使用内置函数 make() 声明映射

map_variable := make(map[key_data_type]value_data_type)函数

// 建立一个映射,键的类型是string,值的类型是int
dict := make(map[string]int)
复制代码

2. 使用映射字面量声明映射

// 建立一个映射,键和值的类型都是string
// 使用两个键值对初始化映射
dict := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
复制代码

使用映射

1. 为映射赋值

键值对赋值给映射,是经过指定适当类型的键并给这个键赋一个值来完成的。spa

// 建立一个空映射,用来存储颜色以及颜色对应的十六进制代码
colors := map[string]string{}

// 将Red的代码加入到映射
colors["Red"] = "#da1337"
复制代码

2. 对 nil 映射赋值运行会报错

// 经过声明映射建立一个 nil 映射
var colors map[string]string

// 将 Red 的代码加入到映射
colors["Red"] = "#da1337"

Runtime Error:
panic: runtime error: assignment to entry in nil map
复制代码

3. 从映射获取值并判断键是否存在

// 获取键 Blue 对应的值
value, exists := colors["Blue"]
// 这个键存在吗?
if exists {
    fmt.Println(value)
}
复制代码

4. 从映射获取值,并经过该值判断键是否存在

// 获取键 Blue 对应的值
value := colors["Blue"]

// 这个键存在吗?
if value != "" {
    fmt.Println(value)
}
复制代码

5. 使用 range 迭代映射

// 建立一个映射,存储颜色以及颜色对应的十六进制
colors := map[string]string{
    "AliceBlue": "#f0f8ff",
    "Coral": "#ff7F50",
    "DarkGray": "#a9a9a9",
    "ForestGreen": "#228b22"
}

// 显示映射里的全部颜色
for key, value := range colors {
    fmt.Printf("key: %s Value: %s\n", key, value)
}
复制代码

6. 从映射中删除一项

// 删除键为 Coral 的键值对
delete(colors, "Coral")

// 显示映射里的全部颜色
for key, value := range colors {
    fmt.Printf("key: %s Value: %s\n", key, value)
}
复制代码

在函数间传递映射

在函数间传递映射并不会制造出该映射的一个副本。实际上,当传递映射给一个函数,并对这个映射作了修改时,全部对这个映射对引用都会擦觉到这个修改。rest

相关文章
相关标签/搜索