Programmiersprache Go 1.18 ermöglicht generische Programmierung

Das Go-Team führt Generics ein – ein Feature, was in anderen Sprachen bereits vorhanden ist. Zudem ist das Schreiben Fuzzing-basierter Tests möglich.

In Pocket speichern vorlesen Druckansicht 37 Kommentare lesen

(Bild: Stokkete/Shutterstock.com)

Lesezeit: 3 Min.

Das Go-Entwicklerteam hat Version 1.18 der ursprünglich von Google entwickelten Programmiersprache veröffentlicht. Wohl die größte Neuerung ist die Einführung der Generics – auf dieses Feature, was in vielen anderen Programmiersprachen vorhanden ist, mussten die Go-Entwicklerinnen und -Entwickler lange warten. Laut Blogbeitrag sind die Änderungen zwar groß, allerdings soll es keine Probleme mit der Abwärtskompatibilität geben.

Generische Datentypen sollen es Entwicklerinnen und Entwicklern ermöglichen, Code gemeinsam zu nutzen und Programme einfacher zu erstellen. Generische Programmierung erlaubt, Funktionen und Datenstrukturen zu schreiben, bei denen einige Typen erst im späteren Verlauf angegeben werden müssen. Damit lässt sich eine Funktion schreiben, die auf einem Slice eines beliebigen Datentyps operiert. Der tatsächliche Datentyp wird erst beim Aufruf der Funktion angegeben. Des Weiteren lässt sich eine Datenstruktur definieren, die Werte eines beliebigen Typs speichert, wobei der tatsächlich zu speichernde Typ erst beim Erstellen einer Instanz der Datenstruktur angegeben wird.

Bereits Anfang des Jahres 2021 wurde nach einigen vorherigen Versuchen ein Vorschlag zur Änderung der Sprache eingereicht, der Go um die Unterstützung von Typparametern für Typen und Funktionen erweitern und so eine Form der generischen Programmierung ermöglichen sollte. Dieser Vorschlag wurde bereits mit dem Release der ersten Beta zu Go 1.18 im Dezember 2021 umgesetzt. Nun ist es offiziell: Go 1.18 führt (endlich) Generics ein. Zu den Neuerungen zählt beispielsweise, dass die Syntax für Funktions- und Typdeklarationen ab sofort auch Typparameter akzeptiert. Darüber hinaus lassen sich parametrisierte Funktionen und Typen instanziieren, indem ihnen eine Liste von Typargumenten in eckigen Klammern folgt. Die Sammlung an Operatoren und Interpunktionszeichen hat mit ~ ein neues Token erhalten.

Zu den kleineren Neuerungen zählt unter anderem die Möglichkeit des Schreibens Fuzzing-basierter Tests. Automatische Eingaben sollen somit leichter zu finden sein, die Programme zum Abstürzen bringen oder ungültige Antworten zurückgeben. Neben einem neuen Go-Workspace-Modus, der es Entwicklern ermöglichen soll, mit mehreren Go-Modulen zur gleichen Zeit arbeiten zu können, bringt das Update mit go version -m einen neuen Befehl.

Damit lassen sich künftig Build-Details aufzeichnen. Somit kann ein Programm die eigenen Build-Informationen mit debug.ReadBuildInfo abfragen, aber auch von anderen Binärdateien mit dem neuen Paket debug/buildinfo lesen. Laut Blogbeitrag ist die neue Funktionsweise als Grundlage für jedes Werkzeug gedacht, das eine Software-Bill-of-Materials (SBOM) für Go-Binärdateien erstellen muss.

Nähere Informationen zu Go 1.18 finden sich im Beitrag auf dem offiziellen The-Go-Blog.

Siehe auch:

  • Go bei heise Download

(mdo)