TGViewer
Go tests Go tests @golangtests · 7.82K subscribers
Post #760 2.75K
🧪 Задача на 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
  • 👎 3
  • ❤ 2
More from @golangtests
  1. Sep 26, 2026Nil-интерфейс в Go: почему err == nil выдаёт false? Nil-интерфейс в Go ломает даже опытных…
  2. Sep 23, 2026Задача по Go: `select` и побочные эффекты Что выведет программа? package main import "fmt"…
  3. Sep 23, 2026Не застревайте в прошлом — учитесь новым навыкам и ИИ Чтобы успевать за требованиями рынка…
  4. Sep 13, 2026👣 Задача на Go 1.27: concurrent job scheduler с generic methods Нужно реализовать библиот…
  5. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  6. Sep 2, 2026👣 Go 1.27: почему две разные closure внезапно могут иметь одинаковый адрес функции? Что в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →