Ответ
Да, порядок элементов в слайсе гарантирован.
Слайс в Go — это дескриптор, который представляет собой непрерывный сегмент базового массива. Поскольку элементы в массиве расположены в памяти последовательно, порядок элементов в слайсе строго определён и соответствует их индексам — от 0
до len(s)-1
.
При итерации по слайсу с помощью цикла for...range
элементы всегда возвращаются в порядке их индексов.
Пример:
s := []string{"a", "b", "c"}
// Элементы будут напечатаны в порядке: 0 a, 1 b, 2 c
for i, v := range s {
fmt.Println(i, v)
}
Важное отличие: В отличие от слайсов, порядок итерации по элементам map
не гарантирован. Если вам нужна упорядоченная коллекция ключ-значение, следует использовать слайс ключей для итерации по мапе в нужном порядке.