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)
							 |