Как используются кэши при переборе слайса

«Как используются кэши при переборе слайса» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При переборе слайса кэширование может ускорить работу, если доступ к элементам требует вычислений. Например, кэширование длины слайса в цикле:

// Без кэширования длины - len() вызывается на каждой итерации
for i := 0; i < len(slice); i++ {
    // ...
}

// С кэшированием длины
length := len(slice)
for i := 0; i < length; i++ {
    // ...
}

Для сложных структур можно кэшировать указатели:

for i := range slice {
    item := &slice[i] // Кэшируем указатель
    item.Value = process(item.Value)
}

Важно: при изменении слайса во время итерации (append, delete) кэшированная длина может стать неактуальной. В таких случаях лучше использовать range или пересчитывать длину.