Зарегистрируйтесь, чтобы продолжить обучение

Массивы Основы Go

Массив — это коллекция однотипных значений фиксированной длины:

nums := [5]int{}

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

nums := [5]int{} // [0, 0, 0, 0, 0]

// длинная инициализация
var nums [5]int // [0, 0, 0, 0, 0]

При попытке инициализации элементов за границей массива выходит ошибка компиляции:

nums := [1]int{1,2} // array index 1 out of bounds [0:1]

Чтение и запись элементов массива происходит через квадратные скобки:

nums := [3]int{1, 2, 3}

fmt.Println(nums[1]) // 2

nums[2] = 33

fmt.Println(nums) // [1, 2, 33]

Нумерация элементов массива начинается с 0. При попытке чтения/записи элементов за границей массива выходит ошибка компиляции:

words := [2]string{}

words[2] // invalid array index 2 (out of bounds for 2-element array)

Массивы в Go передаются по значению, следовательно, любое изменение внутри функции не влияет на исходный массив:

package main

import (
    "fmt"
)

func main() {
    a := [3]int{1,2,3}

    modifyArr(a)

    fmt.Println(a) // 1, 2, 3
}

func modifyArr(nums [3]int) {
    nums[0] = 35
}

В Go есть встроенная функция len(), которая возвращает длину массива:

fmt.Println(len([5]int{1,2,3})) // 5
fmt.Println(len([10]int{})) // 10

Так как массивы инициализируются с фиксированной длиной, то функция len() всегда возвращает одно и то же значение.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»