В языке Go меняют фундаментальную вещь - цикл. Если раньше в циклах были проблемы с замыканиями, так как переменная цикла имела скоуп всего цикла, а не одной итерации, то в 1.22 это поведение поменяют.



проще показать на примере:



```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