В языке Go меняют фундаментальную вещь - цикл. Если раньше в циклах были проблемы с замыканиями, так как переменная цикла имела скоуп всего цикла, а не одной итерации, то в 1.22 это поведение поменяют.
проще показать на примере:
```go
Последняя строка примера напечатает 5 в go 1.21, но в go 1.22 будет уже интуитивно понятный 0.
С одной стороны, это вроде бы нарушение обратной совместимости, но зато не надо писать пугающее новичков i := i для починки скоупа.
Да и сложно представить кейс, чтобы кто-то хотел во все функции замкнуть именно последнее значение цикла.
Говорят, такой же трюк проделывали с C# в 2012 году, и все довольны
UPD. Написал статью на Хабр
#golang
проще показать на примере:
```go
```
funcs := []func(){}
for i := 0; i < 5; i++ {
funcs = append(funcs, func() {
fmt.Println(i)
})
}
funcs[0]()
Последняя строка примера напечатает 5 в go 1.21, но в go 1.22 будет уже интуитивно понятный 0.
С одной стороны, это вроде бы нарушение обратной совместимости, но зато не надо писать пугающее новичков i := i для починки скоупа.
Да и сложно представить кейс, чтобы кто-то хотел во все функции замкнуть именно последнее значение цикла.
Говорят, такой же трюк проделывали с C# в 2012 году, и все довольны
UPD. Написал статью на Хабр
#golang