Trotz des nur kleinen Versionssprungs kündigen die Entwickler ihre neue Go-Version als „großen Meilenstein“ an. Neben Performance-Verbesserungen dürfen sich Programmierer über Generics, eingebautes Fuzzing und Workspaces freuen.
Go 1.18 unterstützt die generische Programmierung über parametrisierte Typen. Mit ihnen lässt sich eine Funktion schreiben, die fast beliebige Datentypen verarbeitet. Dabei ersetzt man zunächst den Datentyp durch einen Platzhalter, den der Go-Compiler dann später durch den jeweils passenden Typen ersetzt. Ein Beispiel und eine Einführung liefert ein Tutorial der Go-Entwickler. Die dort vorgestellte Funktion
func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { … }
erwartet in der Map „m“ Zahlen vom Typ „int64“ oder „float64“, die sie dann im Rumpf miteinander addiert.
Des Weiteren lässt sich bei Tests die Fuzzing-Methode nutzen. Dabei testet Go den Code mit zahlreichen zufällig generierten Eingaben. Dies wiederum kann Probleme aufdecken, an die man als Programmierer beziehungsweise Tester nicht gedacht hat. Abschließend kennt Go 1.18 sogenannte Workspaces, die eine parallele Arbeit an mehreren Modulen vereinfachen.


