cpp

Словари и списки

Словарь — это набор данных, доступ к которым осуществляется не по индексу, а по ключу. В качестве ключа можно указать, например, число или строку. Помимо словарей в этой главе мы рассмотрим структуру List из пакета container/list, которая реализует двусвязный список, позволяющий хранить данные произвольных типов.

Словари

Словарь (его еще называют ассоциативным массивом) — это набор данных, доступ к которым осуществляется не по индексу, а по ключу. В качестве ключа можно указать, например, число или строку. Следует заметить, что элементы в словарях располагаются в произвольном порядке. Чтобы получить элемент, необходимо указать ключ, который использовался при сохранении значения.

Объявление и инициализация словаря

Объявление и инициализация словаря выглядит следующим образом:

var <Переменная> map[<Тип ключа>]<Тип значения> =
                 map[<Тип ключа>]<Тип значения>{
   <Ключ 1>: <Значение 1>,
   ...
   <Ключ N>: <Значение N>,
}

Пример объявления словаря с ключами типа string и значениями типа int:

var dict map[string]int
fmt.Printf("%T\n", dict)  // map[string]int
fmt.Println(dict)         // map[]
fmt.Printf("%v\n", dict)  // map[]
fmt.Printf("%#v\n", dict) // map[string]int(nil)

При объявлении элементам словаря можно присвоить начальные значения. Для этого после объявления указывается оператор =, далее идет ключевое слово map после которого внутри квадратных скобок задается тип ключей и после закрывающей квадратной скобки передается тип элементов словаря, а затем перечисляются пары ключ: значение через запятую внутри фигурных скобок. Пример инициализации словаря:

var dict map[string]int = map[string]int{"a": 10, "b": 20}
fmt.Println(dict)         // map[a:10 b:20]
fmt.Printf("%v\n", dict)  // map[a:10 b:20]
fmt.Printf("%#v\n", dict) // map[string]int{"a":10, "b":20}

Если выполняется инициализация, то тип данных можно не указывать:

var dict = map[string]int{"a": 10, "b": 20}
fmt.Println(dict)         // map[a:10 b:20]

Можно также использовать сокращенный формат объявления локальной переменной:

dict := map[string]int{"a": 10, "b": 20}
fmt.Printf("%T\n", dict)  // map[string]int
fmt.Println(dict)         // map[a:10 b:20]

Создать пустой словарь можно так:

dict := map[string]int{}
fmt.Println(dict)         // map[]

Допускается указывать пары ключ: значение на отдельных строках. В этом случае после последней пары должна стоять завершающая запятая или закрывающая фигурная скобка:

dict := map[string]int{
   "a": 10,
   "b": 20, // Завершающая запятая обязательна!
}
fmt.Println(dict)         // map[a:10 b:20]
dict2 := map[string]int{
   "c": 30,
   "d": 40}
fmt.Println(dict2)        // map[c:30 d:40]

Пример присваивания словаря после объявления:

var dict map[string]int
dict = map[string]int{"a": 10, "b": 20}
fmt.Println(dict)         // map[a:10 b:20]

Для создания словаря можно также воспользоваться глобальной функцией make(). Формат функции:

make(<Тип словаря>[, <Число элементов>]) Type

Если второй параметр указан, то выделяется место для хранения заданного числа элементов. Пример создания пустого словаря:

dict := make(map[string]int)
fmt.Println(dict)         // map[]

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Реквизиты

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp