TG Telegram Group & Channel
Go tests | United States America (US)
Create: Update:

🧪 Задача на Go 1.24: Range и поведение переменной цикла

Что выведет следующий код в Go 1.24?


package main

import "fmt"

func main() {
values := []int{10, 20, 30}
funcs := []func(){}

for v := range values {
funcs = append(funcs, func() {
fmt.Println(v)
})
}

for _, f := range funcs {
f()
}
}


Варианты ответа:
A)

1
2


B)

2
2


C)

20
30


D)

0
0


---

Правильный ответ: A

Почему:
В Go 1.24 при использовании
for v := range, переменная v копируется на каждой итерации, а не переиспользуется. Таким образом, замыкания получают своё собственное значение v на каждой итерации.
Здесь
range возвращает индексы (0, 1, 2), а не значения среза.

Чтобы получить значения (
10, 20, 30), нужно использовать for _, v := range values.

🧪 Задача на Go 1.24: Range и поведение переменной цикла

Что выведет следующий код в Go 1.24?


package main

import "fmt"

func main() {
values := []int{10, 20, 30}
funcs := []func(){}

for v := range values {
funcs = append(funcs, func() {
fmt.Println(v)
})
}

for _, f := range funcs {
f()
}
}


Варианты ответа:
A)

1
2


B)

2
2


C)

20
30


D)

0
0


---

Правильный ответ: A

Почему:
В Go 1.24 при использовании
for v := range, переменная v копируется на каждой итерации, а не переиспользуется. Таким образом, замыкания получают своё собственное значение v на каждой итерации.
Здесь
range возвращает индексы (0, 1, 2), а не значения среза.

Чтобы получить значения (
10, 20, 30), нужно использовать for _, v := range values.
👍14👎32


>>Click here to continue<<

Go tests




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)