mirror of
https://github.com/golang/go
synced 2024-11-14 23:50:28 -07:00
77cc7fbc84
The "Changes to the language" section at the top of the release notes will likely ultimately include more explanation about iterators, or at least, the Go project will likely publish additional introductory material on iterators on the blog and so on. As a perhaps temporary step given current interest, this CL updates the release notes with two additional links for details and motivation. The new package documentation for the iter package is up-to-date, precise, and also more accessible than the language spec, while the 2022 pre-proposal GitHub discussion starts with perhaps the most compelling motivation writeup so far. (We purposefully include "2022" in the text to help illustrate this was not the result of an overly hasty process). We also update the target of the existing language spec reference to be closer to the new material. For #61405. Change-Id: I4bc0f99c40f31edfc5c0e635dca5f844b26b6eeb Reviewed-on: https://go-review.googlesource.com/c/go/+/592935 Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
19 lines
863 B
Markdown
19 lines
863 B
Markdown
## Changes to the language {#language}
|
|
|
|
<!-- go.dev/issue/61405, CL 557835, CL 584596 -->
|
|
Go 1.23 makes the (Go 1.22) ["range-over-func" experiment](/wiki/RangefuncExperiment) a part of the language.
|
|
The "range" clause in a "for-range" loop now accepts iterator functions of the following types
|
|
|
|
func(func() bool)
|
|
func(func(K) bool)
|
|
func(func(K, V) bool)
|
|
|
|
as range expressions.
|
|
Calls of the iterator argument function produce the iteration values for the "for-range" loop.
|
|
For details see the [iter] package documentation and the [language spec](/ref/spec#For_range).
|
|
For motivation see the 2022 ["range-over-func" discussion](/issue/56413).
|
|
|
|
<!-- go.dev/issue/46477, CL 566856, CL 586955, CL 586956 -->
|
|
Go 1.23 includes preview support for [generic type aliases](/issue/46477).
|
|
Building the toolchain with `GOEXPERIMENT=aliastypeparams` enables this feature.
|