80 lines
2.4 KiB
Markdown
80 lines
2.4 KiB
Markdown
---
|
||
title: Go Maps
|
||
localeTitle: Go Maps
|
||
---
|
||
## Go Maps
|
||
|
||
Карта, называемая _словарем_ на других языках, «сопоставляет» ключи с значениями. Карта объявляется следующим образом:
|
||
|
||
```go
|
||
var m map[Key]Value
|
||
```
|
||
|
||
Эта карта не имеет ключей, и никакие клавиши не могут быть добавлены к ней. Чтобы создать карту, используйте функцию `make` :
|
||
|
||
```go
|
||
m = make(map[Key]Value)
|
||
```
|
||
|
||
Все может использоваться как ключ или как значение.
|
||
|
||
### Изменение карт
|
||
|
||
Вот некоторые общие действия с картами.
|
||
|
||
#### Вставка / изменение элементов
|
||
|
||
Создайте или измените элемент `foo` в map `m` :
|
||
|
||
```go
|
||
m["foo"] = bar
|
||
```
|
||
|
||
#### Получение элементов
|
||
|
||
Получить элемент с ключом `foo` в map `m` :
|
||
|
||
```go
|
||
element = m["foo"]
|
||
```
|
||
|
||
#### Удаление элементов
|
||
|
||
Удалить элемент с ключом `foo` в map `m` :
|
||
|
||
```go
|
||
delete(m, "foo")
|
||
```
|
||
|
||
#### Проверьте, был ли ключ использован
|
||
|
||
Проверьте, используется ли ключ `foo` в map `m` :
|
||
|
||
```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)
|
||
* [Голанская книга](https://www.golang-book.com/books/intro/6#section3)
|
||
* [Спецификация языка программирования Go](https://golang.org/ref/spec#Making_slices_maps_and_channels) |