Die Programmiersprache Go hat sich seit ihrer Erstveröffentlichung im Jahr 2009 stark weiterentwickelt. Go 1.18 war aufgrund seiner Unterstützung für Generika und vieler anderer wichtiger Updates eine mit Spannung erwartete Veröffentlichung.
Go veröffentlichte Version 1.18 im März 2022. Hier sind die Fakten zu den wichtigsten Änderungen.
Unterstützung für Generika
Mit der generischen Programmierung können Sie Funktionen schreiben, die flexiblere Typen akzeptieren und zurückgeben können.
Vor der Unterstützung von Generika mussten Sie Parametertypen und Rückgabetypen explizit angeben. Die einfachste Form von Generics ermöglicht es Ihnen, untypisierte Parameter anzugeben:
FunkAlles drucken[T jeder](SacheT) {
fmt.Println(Sache)
}
Aber Generika bieten viel mehr Macht als nur diese. Sie können fast jede Kombination und Granularität des Typs für Parameter deklarieren. Sie können zum Beispiel die verwenden Einschränkungen Paket, um eine Funktion zu schreiben, die mit jedem Wert arbeitet, den Sie bestellen können. Dazu gehören Int, Floats und Strings. Hier ist ein Beispiel, das die Syntax demonstriert:
importieren "golang.org/x/exp/constraints"
Funkmax[T-Einschränkungen. bestellt](Eingang[]T) (maxT) {
für _, v := Bereichseingabe {
wenn V > maximal {
max = v
}
}
Rückkehr max
}
Beachten Sie, dass diese Funktion den generischen Typ verwendet, Einschränkungen. Bestellt, um seinen Parameter und seinen Rückgabetyp zu deklarieren.
Generics sorgen für Unsicherheit und Flexibilität im Code. Der Generika-Vorschlag und die Änderungen sind abwärtskompatibel.
Fuzz-Tests
Fuzzing ist ein Softwaretesttechnik die ein Programm mit fehlerhaften, unerwarteten oder unvorhersehbaren Daten validiert.
Das testen Das Paket führt Fuzzing in 1.18 ein. Um also ein Fuzz zu definieren, müssen Sie es aus der Standardbibliothek importieren:
importieren "testen"
Nach dem Importieren der testen Paket können Sie einen Bezeichner vom Typ übergeben *testen. F zur Testfunktion.
FunktestFunk(f * testen. F) {
// dein Code
}
Fuzzing generiert Eingabeparameter zum Testen von Code. Das Ergebnis des Fuzzings ist unvorhersehbar, da die Eingaben nicht benutzerdefiniert sind. Fuzzing sollte Ihnen helfen, bessere Codetests zu schreiben und Fehler zu finden, von denen Sie nicht wussten, dass sie existieren.
Gehen Sie zum Workspace-Support
Arbeitsbereiche sind Verzeichnisse mit ähnlichem Quellcode, die ein Projekt oder eine größere Einheit bilden. Arbeitsbereiche erleichtern das Verwalten und Debuggen von Code, indem ähnlicher Code basierend auf der Funktionalität gruppiert wird.
Herkömmlicherweise unterteilen Sie Go-Projekte in Quellcode (Quelle) und ausführbare Dateien (Behälter). Die Go-Toolchain baut Quellcode aus ersterer in ausführbare Dateien in letzterer um. Go-Arbeitsbereiche ermöglichen es Entwicklern, mit mehreren Arbeitsbereichen zu arbeiten, indem sie Go-Module mit einem bestimmten Hauptmodul verwenden.
Der Befehl zum Erstellen von Arbeitsbereichen lautet:
$ geh arbeiten <Befehl>
Verwenden Sie die Arbeit Befehl mit Unterbefehlen wie:
- drin → Erstellt einen Arbeitsbereich im angegebenen Verzeichnis.
- benutzen → fügt ein neues Modul zu go.work hinzu, die go-Workspace-Datei.
- bearbeiten → bearbeitet die go-Workspace-Datei.
- synchronisieren → synchronisiert Abhängigkeiten von der Build-Liste zu den Workspace-Modulen.
Die Einbeziehung von Workspaces to go würde die Produktivität wie geplant bei der Entwicklung der Sprache steigern.
Leistungsverbesserungen
gehen Version 1.18 unterstützt jetzt ARM64 Apple M1 und 64-Bit-PowerPC in der ABI-Aufrufkonvention. Dies führt zu einer Steigerung der CPU-Leistung von über 10 % für Benutzer dieser Geräte.
Deklarierte und nicht verwendete Variablen in Funktionen werden jetzt bei der Programmkompilierung als Fehler protokolliert.
Das geh bauen Der Befehl unterstützt zusammen mit anderen verwandten Befehlen die -asan -Flag, das die Interoperabilität mit C/C++ unterstützt. Dies hilft Go-Entwicklern, Go-Programme mit C- und C++-Programmen zu verwenden.
Weitere wichtige Aktualisierungen
Das geh holen Der Befehl installiert keine Pakete mehr im modulbewussten Modus, was eine große Änderung gegenüber dem Zeitpunkt darstellt, an dem Sie habe zuerst mit Go angefangen. Das gehen installieren Befehl ersetzt werden zum Anpassen von Modulabhängigkeiten über Arbeitsbereiche hinweg.
Da der Typprüfer jetzt Generika verarbeitet, können Fehlermeldungen anders protokolliert werden als in früheren Versionen.
Die Zeit, die zum Kompilieren von Programmen benötigt wird, kann in 1.18 langsamer sein. Dies wirkt sich jedoch nicht auf die Ausführungszeit aus, nachdem Go Ihr Programm kompiliert hat.
Die vollständigen Details zu den neuesten Änderungen finden Sie in den Versionshinweisen für Gehen Sie 1.18.
Go 1.18 hat mehrere verschiedene Ergänzungen
Mit Go 1.18 können Sie jetzt generischen Code schreiben, mithilfe von Fuzzing effizient testen und mithilfe von Arbeitsbereichen zwischen Go-Modulen wechseln. Sie können sogar Code schreiben, der in Verbindung mit C- und C++-Programmen funktioniert.
Lohnt es sich heute, Golang zu lernen?
Lesen Sie weiter
Verwandte Themen
- Programmierung
- Programmierung
- Programmiersprachen
Über den Autor
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um sich anzumelden