0Pricing
Go Academy · Урок

Массивы: коллекции фиксированной длины

Литералы массивов, индексация и длина

«Массивы: коллекции фиксированной длины» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Что такое массив

Массив в Go — это последовательность элементов одного типа с фиксированной длиной. Длина является частью типа: [3]int и [4]int — разные типы.

  • Массивы являются типами-значениями — присваивание копирует весь массив
  • Длина всегда известна во время компиляции
  • Массивы редко используют напрямую; для большинства задач предпочитают срезы

Литералы массивов

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

package main

func main() {
    primes := [5]int{2, 3, 5, 7, 11}
    names  := [3]string{"Alice", "Bob", "Carol"}
    flags  := [4]bool{true, false, true, false}
    _ = primes; _ = names; _ = flags
}

Длина массива и индексация

Используйте len(), чтобы получить длину, и индексацию с отсчётом от нуля для чтения и записи элементов:

package main
import "fmt"

func main() {
    scores := [3]int{90, 85, 92}
    fmt.Println(len(scores)) // 3
    fmt.Println(scores[0])   // 90
    scores[1] = 100
    fmt.Println(scores)      // [90 100 92]
}

Многоточие в литералах массивов

Используйте [...], чтобы компилятор сам подсчитал количество элементов:

package main
import "fmt"

func main() {
    days := [...]string{"Mon","Tue","Wed","Thu","Fri"}
    fmt.Println(len(days)) // 5
}

Массивы являются типами-значениями

При присваивании массива или передаче его в функцию Go копирует его целиком. Изменение копии не влияет на оригинал:

package main
import "fmt"

func main() {
    a := [3]int{1, 2, 3}
    b := a     // full copy
    b[0] = 99
    fmt.Println(a) // [1 2 3] — unchanged
    fmt.Println(b) // [99 2 3]
}

Сравнение массивов

Массивы одного типа и длины можно сравнивать с помощью == и !=:

package main
import "fmt"

func main() {
    x := [3]int{1, 2, 3}
    y := [3]int{1, 2, 3}
    z := [3]int{1, 2, 4}
    fmt.Println(x == y) // true
    fmt.Println(x == z) // false
}

Двумерные массивы

Массивы можно вкладывать друг в друга, образуя сетки или матрицы:

package main
import "fmt"

func main() {
    grid := [2][3]int{
        {1, 2, 3},
        {4, 5, 6},
    }
    fmt.Println(grid[1][2]) // 6
}

Перебор массива

Для перебора используйте классический цикл for или range:

package main
import "fmt"

func main() {
    nums := [4]int{10, 20, 30, 40}
    for i, v := range nums {
        fmt.Printf("[%d] = %d\n", i, v)
    }
}

Массивы и срезы

Основные различия:

  • Массив: фиксированный размер, тип-значение, размер является частью типа
  • Срез: динамический размер, ссылочный тип, основан на массиве
  • На практике используйте срезы, если только Вам не нужен фиксированный размер, известный во время компиляции (например, хеш SHA-256 [32]byte)

Распространённые ошибки

Обратите внимание на следующие моменты:

  • Индекс за пределами диапазона — Go вызывает панику во время выполнения, если i >= len(arr)
  • Передача больших массивов в функции приводит к затратному копированию — вместо этого используйте указатели или срезы
  • Не забывайте, что [3]int и [4]int — несовместимые типы

Быстрая проверка

Какова длина [...]string{"a","b","c"}?

Итоги: массивы

Основные выводы:

  • Массивы имеют фиксированную длину, известную во время компиляции, и эта длина является частью типа
  • Они являются типами-значениями — присваивание копирует все элементы
  • Используйте len() и индексацию с отсчётом от нуля
  • Для большинства задач работы с коллекциями предпочитайте срезы

Задание для практики

Объявите массив из 5 целых чисел, присвойте третьему элементу значение 100, затем выведите массив с помощью range.

Часто задаваемые вопросы

Урок «Массивы: коллекции фиксированной длины» бесплатный?

Да — полный текст урока «Массивы: коллекции фиксированной длины» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Массивы: коллекции фиксированной длины»?

Литералы массивов, индексация и длина Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Массивы: коллекции фиксированной длины»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Массивы: коллекции фиксированной длины
  2. Срезы: динамические списки
  3. Отображения: хранилища пар ключ-значение
  4. Итерация по коллекциям с range
← Назад к Go Academy