В этом блоке кода ниже, я ожидаю, что выходные данные будут 0, 1, 2, 3, ..., 9. Однако, только выходные данные 10, 10, ..., 10 производятся.
package main
import "fmt"
func adder() []func() {
out := []func(){}
for i := 0; i < 10; i++ {
out = append(out, func() { fmt.Println(i) })
}
return out
}
func main() {
out := adder()
for i := 0; i < 10; i++ {
out[i]()
}
}
Моя ментальная модель предполагает, что новая функция генерируется и сохраняется каждый раз в цикле for, но, похоже, это не так.Есть ли решение для генерации новых функций без изменения сигнатуры (без параметров или глобальных переменных), но с сохранением текущего значения i?