従来、スライスやマップ、チャネルには range が使えましたが、 独自データ構造には統一的な方法がなく、ライブラリごとに異なる実装が必要でした。 この課題を解決するため、標準化されたイテレーション手法として range over func が提案・実装され、より簡潔 で可読性の高いコードが書けるようになりました。
:= range の右辺にできない int, その他全て Go1.22 x := range の右辺にできる slice, map, channel, int x := range の右辺にできない その他全て Go1.23 x := range の右辺にできる slice, map, channel, int, iter.Seq[type] x := range の右辺にできない 無いと言えなくもない 図で整理