Что выведет код Middle Слайсы и мапы изнутри обновлено

Что выведет Go: append в слайс во время range

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import "fmt"

func main() {
    s := []int{1, 2, 3}
    for _, v := range s {
        s = append(s, v*10)
    }
    fmt.Println(len(s), s)
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 6 [1 2 3 10 20 30]. Выражение в range вычисляется один раз до начала цикла, поэтому итераций ровно 3, сколько было элементов в начале.

Что выведет

6 [1 2 3 10 20 30]

Разбор

Выражение в range вычисляется один раз до начала цикла, поэтому итераций ровно 3, сколько было элементов в начале. Добавленные элементы в обход не попадают, бесконечного цикла нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.