Массивы в Go
Массив хранит несколько значений одного типа вместе под одним именем. Благодаря этому не нужно создавать отдельную переменную для каждого значения.
Объявление массива
Go позволяет объявить массив либо с ключевым словом var, либо с оператором :=.
Синтаксис здесь использует var:
Пример
Здесь длина каждого массива указана явно: 3 для arr1 и 5 для arr2. В одном случае используется var, в другом — :=:
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
var arr1 = [3]int{1, 2, 3}
arr2 := [5]int{4, 5, 6, 7, 8}
fmt.Println(arr1)
fmt.Println(arr2)
}
Пример
Замените длину на ..., и Go сам посчитает значения, поэтому эти два массива получают длины 3 и 5:
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
var arr1 = [...]int{1, 2, 3}
arr2 := [...]int{4, 5, 6, 7, 8}
fmt.Println(arr1)
fmt.Println(arr2)
}
Синтаксис
Когда вы указываете длину сами:
var array_name = [length]datatype{values}
Синтаксис
Когда Go определяет длину за вас:
var array_name = [...]datatype{values}
Доступ к элементам массива
Чтобы прочитать один элемент массива, укажите его индекс в квадратных скобках.
Отсчёт начинается с 0, а не с 1, поэтому [0] даёт первый элемент, [1] — второй и так далее.
Пример
Индексы 0 и 2 дают первое и третье значения из prices:
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
prices := [3]int{10, 20, 30}
fmt.Println(prices[0])
fmt.Println(prices[2])
}
Изменение элементов массива
Та же индексная нотация работает и при записи: присвойте индексу новое значение, и этот элемент будет заменён.
Пример
Присваивание в prices[2] заменяет третье значение, 30, на 50:
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
prices := [3]int{10, 20, 30}
prices[2] = 50
fmt.Println(prices[0])
fmt.Println(prices[2])
}
Инициализация массива
Элемент массива, оставленный без значения, на самом деле не пуст. Go заполняет его значением по умолчанию для его типа, и то же самое происходит с массивом, который вы вообще не инициализировали.
Примечание: Для int это значение 0; для string это "".
Пример
Вы можете задать только нужные позиции, написав index:value. Здесь индекс 1 получает 10, индекс 2 получает 40, а остальные три элемента остаются равными 0:
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
arr1 := [5]int{1:10, 2:40}
fmt.Println(arr1)
}
Определение длины массива
Чтобы узнать, сколько элементов в массиве, передайте его функции len().