Go 语言中操作映射

1. 定义映射

        大多数主流编程语言都支持映射,因为它们可以说是存储数据的最重要的数据结构之一。映射是成对值的集合,在每对值中,其中一个称为 “键” ,另一个则为它对应的 “值”。

        可以使用映射的键来引用它对应的值,从而避免引用值本身;还可以使用映射来更改与另一个值关联的值。

        Go 通过内置的 map 数据类型来提供映射功能,基本使用格式如下所示:

map[KeyType]ValueType

        键的类型和值的类型可以不同,但所有 “键” 的类型必须相同,所有 “值” 的类型必须相同。映射中的值可以是任何类型(甚至是其他映射类型)。映射的“键” 可以是以下任何一种类型。

  • 布尔类型
  • 数值类型
  • 字符串
  • 指针
  • 包含上述类型的结构体或数组
  • 通道
  • 接口类型

        由于在映射中键是标识符,因此每个键必须在映射中是唯一的。虽然多个键值对中可以出现相同的“值”,但是同一个键不能在多个键值对中同时出现。

        可以使用 map 关键字来定义和初始化一个映射。下面代码清单给出一个简单的例子,用于存储单词在文档中出现的次数。

package main

import {
	"fmt"
}

func main(){
	FreqOccurrence := map[string]int{
		"hi":43,
		"hello":28,
		"hey":44,
		"weather":1,
		"great":35,
	}
	fmt.Println("map value:",FreqOccurrence)
}

 

1.1 维护类型

与在 Go 中使用其他数据结构一样,也需要小心使用映射。

package main

import (
	"fmt"
)

func main() {
	FreqOccurrence := map[string]int{
		"hi":      23,
		"hello":   2,
		"hey":     4,
		"weather": 1.5,
		"great":   35,
	}

	fmt.Println("Map value:", FreqOccurrence)
}
1.2 重复的键

        在使用映射时需要记住的重要一点是键必须是唯一的。下面代码尝试使用重复的键。

package main

import (
	"fmt"
)

func main() {
	FreqOccurrence := map[string]int{
		"hi":      23,
		"hello":   2,
		"hey":     4,
		"weather": 5,
		"great":   35,
		"hi":      10,
	}

	fmt.Println("Map value:", FreqOccurrence)
}

2.空映射

与其他数据类型一们,可以创建空映射,但这样做没有什么用处。

3. 使用 make 创建映射 

虽然可以在同一步骤中声明和初始化一个映射,但有时可能想定义一个还没有任何内容的映射,不过正如刚才看到的,不能将映射声明为空变量,然后使用标准语法为其添加值。

4. 映射的长度

len 函数计算映射中键的数量(进而计算出键值对的数量)。下面代码清单使用 len 来显示映射的大小。

5. 检索映射元素

因为键是映射中每个元素的标识符,所以可以使用键来检索与之相关联的值。

6. 检查映射中的键

有时,我们只想知道一个键是否存在于映射中。为此,可以使用布尔表达式来查找给定的键,并返回 true 或 false .

7. 遍历映射

与其他数据结构一样,可以使用 for 循环来遍历映射中的键值对。下面代码清单使用由映射大小决定的范围来遍历映射。

8.从映射中删除元素

Go 带有一个 delete 函数,可以使用下列语法从映射中删除键值对。

9. 使用字面值声明映射

与其他变量一样,可以在声明映射的同时将字面值添加到其中。下面代码清单在创建 months 映射时直接给出字面值。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mindfulness code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值