Есть несколько способов объявить срезы в Go.
ИМО, каждый из этих способов имеет подразумеваемое значение:
- var foo [] T: объявите фрагмент, к которому код будет добавлять неизвестное количество элементов, и / или это количество не имеет значения.
- var foo = [] T {…} или foo: = [] T {…}: где … - список типов элементов. T. Объявите фрагмент, в котором код уже определил, как его заполнить, и вряд ли он изменится сильно или вообще изменится, пока на него ссылаются. Предпочитаю позже. Также обозначается как return [] T {…}.
- foo: = make ([] T, ‹len›, ‹cap›): объявить часть известной емкости, превышение которой не ожидается при добавлении, или минимальная емкость, которая будет использоваться. Как правило, более короткая форма без емкости (например, make ([] T, ‹len›)) должна использоваться только при создании фрагмента в качестве цели цикла копирования или манипулирования диапазоном индекса.
Я считаю, что эти значения упрощают понимание и использование кода. Я призываю людей учитывать это при объявлении и использовании срезов.