Go 1.22 behebt langjähriges Problem mit for-Schleifen

Das Update der Programmiersprache Go auf Version 1.22 setzt auf Performance, behebt einen for-Schleifen-Bug und nimmt Änderungen an Standardbibliothek vor.

In Pocket speichern vorlesen Druckansicht 9 Kommentare lesen

(Bild: The Viz / Shutterstock.com)

Lesezeit: 2 Min.

Für die Programmiersprache Go liegt mit Version 1.22 ein Update vor. Damit hält das Entwicklerteam den halbjährlichen Veröffentlichungszyklus ein. Inhalt des Updates ist neben dem Beheben eines Problems mit for-Schleifen die neu integrierte Unterstützung für das Durchlaufen von Ganzzahlen. Zudem gibt es Neuerungen in der Standardbibliothek.

Go 1.22 behebt das langjährige Problem in der for-Schleife, das zu unbeabsichtigter gemeinsamer Nutzung von Schleifenvariablen zwischen Iterationen führte. Im Ankündigungsbeitrag der Go-Entwickler findet sich ein Code-Beispiel, das die Lösung demonstriert, indem es a, b und c in einer beliebigen Reihenfolge ausgibt.

func main() {
    done := make(chan bool)

    values := []string{"a", "b", "c"}
    for _, v := range values {
        go func() {
            fmt.Println(v)
            done <- true
        }()
    }

    // wait for all goroutines to complete before exiting
    for _ = range values {
        <-done
    }
}

Weitere Einzelheiten und Werkzeuge zur Vermeidung von Code-Brüchen erläutern sie in einem früheren Blogbeitrag zur Schleifenvariablen.

Das Entwicklerteam hinter der Programmiersprache hat Speicheroptimierungen an der Go-Laufzeitumgebung vorgenommen, die die CPU-Leistung um ein bis drei Prozent verbessern. Sie sollen außerdem den Speicher-Overhead der meisten Go-Programme um ein Prozent reduzieren.

Weiterhin bringt das "Minor Update" Änderungen an der Standardbibliothek mit sich. Sie umfassen etwa ein neues math/rand/v2-Paket mit einer laut Blogbeitrag saubereren und konsistenteren API für die Verwendung von Pseudo-Zufallsgenerierungsalgorithmen. Zudem liefert sie Optimierungen an net/http.ServeMux und führt den Null[T]-Typ in database/sql ein.

Weitere Informationen zu Go 1.22 finden sich auf dem The Go Blog.

(mdo)