IDE во многих других языках типа PHP подсказывает, что не стоит использовать len() (или аналогичные функции) в конструкции for, так как при каждой итерации будет заново вычисляться длина массива.
Я проверил, что если вместо len вставить свою функцию, которая что-то выводит, то она выполнится при каждом цикле:
kek := func() int {
fmt.Prinln("CALL")
return 10
}
for i := 0; i < kek(); i++ {
//
}
В примере выше строка "CALL" будет выведена на экран 10 раз.
В Go тоже лучше переносить такие вещи в переменные?
Данный код идентичен по производительности или второй вариант предпочтительнее?
// 1:
for i := 0; i < len(data); i++ {
//
}
// 2:
dataLength := len(data)
for i := 0; i < dataLength; i++ {
//
}
На самом деле, вроде как ни разу не видел (даже в официальной песочнице) чтобы это переносили в переменную выше цикла, len() что - кешируется?