映射 - Go 语言学习笔记

本文主要介绍Go语言中映射(map)这一内置数据结构,它用于存储无序键值对。详细阐述了映射的创建和初始化方法,包括使用make()函数和映射字面量;还说明了映射的使用方式,如赋值、取值、迭代、删除等操作,以及在函数间传递映射的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

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

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

创建和初始化

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. 为映射赋值

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

// 创建一个空映射,用来存储颜色以及颜色对应的十六进制代码
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)
}
复制代码

在函数间传递映射

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

转载于:https://juejin.im/post/5cef4991e51d457755550856

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值