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