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

Массивы в Go - последовательность элементов одного типа фиксированной длины

Создание массива

[длина]Тип
[N]Тип{значение1, значение2, ..., значениеN}
[...]Тип { значение1, значение2, ..., значениеN }  // ... - вычислить размер массива автоматически

Создание среза

make([]Тип, длина, емкость)
make([]Тип, длина)
[]Тип{}
[]Тип{значение1, значение2, ...}

На практике, всегда лучше создавать пустой срез через первый способ с непустой емкостью, примерно равной количеству ожидаемых элементов:

make([]Тип, 0, 10)

Особенности

Массивы передаются по значению (можно, конечно, сделать указатель на массив), а срезы всегда по ссылке. Из массива всегда извлекается срез через операцию [n:m]. Массивы имеют фиксированный размер, а срезы - переменный.

Все функции в стандартной библиотеке Go, образующие общедоступный API, используют срезы, а не массивы.

Операции над срезами

Добавление элементов и срезов

Contains

Встроенной функции для массивов нет

Last updated