Заполнение многомерных структур в Go
Массив срезов
Пустой массив срезов заполняют двумя циклами.
Внешний проходит ячейки массива, внутренний
дописывает числа в срез через append:
var rows [2][]int
for i := 0; i < len(rows); i++ {
for j := 1; j <= 3; j++ {
rows[i] = append(rows[i], j)
}
}
fmt.Println(rows[1][2]) // выведет 3
Карта срезов
Срезы в карте собирают так же. Вместо индекса массива берут ключ:
data := map[string][]int{}
keys := []string{"a", "b"}
for i := 0; i < len(keys); i++ {
row := []int{}
for j := 1; j <= 2; j++ {
row = append(row, j)
}
data[keys[i]] = row
}
fmt.Println(data["b"][1]) // выведет 2
Срез карт
Каждый элемент среза - отдельная карта.
Ее собирают на шаге цикла и кладут в срез
через append:
table := []map[string]int{}
for i := 1; i <= 2; i++ {
row := map[string]int{"id": i}
table = append(table, row)
}
fmt.Println(table[1]["id"]) // выведет 2
Практические задачи
Заполните массив из двух срезов числами
1, 2 и 3 в каждом.
Выведите последний элемент второго среза.
Заполните карту срезов. По ключам
"a" и "b" лежат числа
4 и 5. Выведите второе
число ключа "b".
Заполните срез двумя картами. В каждой
есть ключ "age", числа 27
и 31. Выведите возраст второй
карты.