Go 1.23 Released: Range-over-Function Iterators
Go 1.23 made range-over-function iterators a language feature, added the new iter and structs packages, and introduced telemetry for the toolchain.
Historical Archive. This article documents an event from 2024 and is preserved with its original date for reference. It is not current news, and details may have changed since publication.
What happened
Go 1.23 was released on August 13, 2024, per the official Go release history. Its headline change is that range-over-function iterators, previewed behind an experiment in Go 1.22, became a full part of the language, giving Go a standard way to write and consume custom iterators.
Range-over-function iterators
Go 1.23 lets a for range loop iterate over certain functions, known as iterators. This makes it possible to write reusable iteration logic, for example walking a custom data structure, and consume it with the familiar for range syntax rather than callbacks. The release added a new iter package to the standard library to support this pattern, and updated packages such as slices and maps with iterator-based helpers.
New standard-library packages
Alongside iter, Go 1.23 added the unique package, which provides facilities for canonicalising, or interning, comparable values so that duplicate values share storage and can be compared cheaply. The standard library also gained iterator-returning functions across existing packages, so the new language feature is immediately useful with the tools developers already know.
Toolchain telemetry
Go 1.23 introduced an opt-in telemetry system for the Go toolchain. When enabled by the user, it uploads anonymised usage and breakage statistics to help the Go team understand how the toolchain is used and to catch regressions. It is off by default and requires explicit consent to turn on, keeping control with the developer.
Why it mattered
Range-over-function iterators filled a long-standing gap, giving Go idiomatic, reusable iteration without sacrificing the simplicity of for range. Combined with the new iter and unique packages, Go 1.23 expanded what the standard library can express while preserving the language's compatibility guarantees.
Related on Skillo
See also: Go 1.24's generic type aliases.
Sources
Published date reflects the original event date (2024-08-13). This article is original Skillo editorial written from the sources above; facts were verified in September 2026.
Written by
Skillo Staff
0 Comments
Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.