80 lines
1.6 KiB
Markdown
80 lines
1.6 KiB
Markdown
|
---
|
|||
|
title: Go Maps
|
|||
|
localeTitle: 去地图
|
|||
|
---
|
|||
|
## 去地图
|
|||
|
|
|||
|
地图,在其他语言中称为_字典_ ,将键“映射”到值。 地图声明如下:
|
|||
|
|
|||
|
```go
|
|||
|
var m map[Key]Value
|
|||
|
```
|
|||
|
|
|||
|
此地图没有按键,也无法添加任何按键。 要创建地图,请使用`make`函数:
|
|||
|
|
|||
|
```go
|
|||
|
m = make(map[Key]Value)
|
|||
|
```
|
|||
|
|
|||
|
任何东西都可以用作键或值。
|
|||
|
|
|||
|
### 修改地图
|
|||
|
|
|||
|
以下是地图的一些常见操作。
|
|||
|
|
|||
|
#### 插入/更改元素
|
|||
|
|
|||
|
在地图`m`创建或更改元素`foo` :
|
|||
|
|
|||
|
```go
|
|||
|
m["foo"] = bar
|
|||
|
```
|
|||
|
|
|||
|
#### 获得元素
|
|||
|
|
|||
|
在map `m`获取带有键`foo`元素:
|
|||
|
|
|||
|
```go
|
|||
|
element = m["foo"]
|
|||
|
```
|
|||
|
|
|||
|
#### 删除元素
|
|||
|
|
|||
|
在地图`m`使用键`foo`删除元素:
|
|||
|
|
|||
|
```go
|
|||
|
delete(m, "foo")
|
|||
|
```
|
|||
|
|
|||
|
#### 检查是否已使用密钥
|
|||
|
|
|||
|
检查地图`m`是否使用了密钥`foo` :
|
|||
|
|
|||
|
```go
|
|||
|
element, ok = m["foo"]
|
|||
|
```
|
|||
|
|
|||
|
如果`ok`为`true` ,则使用密钥, `element`将值保存在`m["foo"]` 。 如果`ok`为`false` ,则表示未使用该键,且该`element`保持其零值。
|
|||
|
|
|||
|
### 映射文字
|
|||
|
|
|||
|
您可以直接创建地图文字:
|
|||
|
|
|||
|
```go
|
|||
|
var m = map[string]bool{
|
|||
|
"Go": true,
|
|||
|
"JavaScript":false,
|
|||
|
}
|
|||
|
|
|||
|
m["Go"] // true
|
|||
|
m["JavaScript"] = true // Set Javascript to true
|
|||
|
delete(m, "JavaScript") // Delete "JavaScript" key and value
|
|||
|
language, ok = m["C++"] // ok is false, language is bool's zero-value (false)
|
|||
|
```
|
|||
|
|
|||
|
#### 更多信息:
|
|||
|
|
|||
|
* [围棋之旅](https://tour.golang.org/moretypes/19)
|
|||
|
* [以身作则](https://gobyexample.com/maps)
|
|||
|
* [Golang Book](https://www.golang-book.com/books/intro/6#section3)
|
|||
|
* [Go编程语言规范](https://golang.org/ref/spec#Making_slices_maps_and_channels)
|