Fehlerbehandlungsmuster
Anstatt Ausnahmen (Exceptions) zu verwenden, nutzt Go eine explizite Fehlerprüfung. Funktionen geben als letzten Rückgabewert einen 'error'-Typ zurück, der sofort geprüft werden sollte.
Snippet öffnen →Lies diese Go-Snippets für Anfänger Zeile für Zeile — jedes kommt mit einer Erklärung, was der Code tut und warum.
Anstatt Ausnahmen (Exceptions) zu verwenden, nutzt Go eine explizite Fehlerprüfung. Funktionen geben als letzten Rückgabewert einen 'error'-Typ zurück, der sofort geprüft werden sollte.
Snippet öffnen →Slices sind dynamische Fenster in Arrays. Im Gegensatz zu Arrays können Slices mit der integrierten 'append'-Funktion in ihrer Größe wachsen.
Snippet öffnen →Go hat nur ein Schleifenkonstrukt: 'for'. Es kann als Standard-C-Style-Schleife oder als 'while'-Schleife verwendet werden, indem Initialisierung und Post-Anweisung weggelassen werden.
Snippet öffnen →Go-Funktionen können mehrere Werte zurückgeben. Dies wird häufig verwendet, um sowohl ein Ergebnis als auch einen Fehler aus einem einzigen Funktionsaufruf zurückzugeben.
In Go können Sie Variablen mit dem Schlüsselwort 'var' und einem expliziten Typ deklarieren oder den Kurzdeklarationsoperator ':=' verwenden, der den Typ automatisch ableitet.
Snippet öffnen →Arrays in Go haben eine feste Länge, die Teil ihres Typs ist. Einmal definiert, kann sich ihre Größe nicht mehr ändern.
Snippet öffnen →Die if-Anweisung wertet eine boolesche Bedingung aus. Um die Bedingung werden keine Klammern verwendet, aber geschweifte Klammern für den Block sind zwingend erforderlich.
Snippet öffnen →Structs werden verwendet, um zusammengehörige Daten zu gruppieren. Im Gegensatz zu Klassen in anderen Sprachen verwendet Go Structs, um die Form von Datenobjekten zu definieren.
Snippet öffnen →Eine Methode ist eine Funktion mit einem speziellen Receiver-Argument. Sie ermöglicht es, Verhalten an Structs zu binden.
Snippet öffnen →Maps sind Gos eingebauter assoziativer Datentyp (Hash-Tabellen). Sie speichern Daten in Schlüssel-Wert-Paaren.
Snippet öffnen →Go bietet zwei Arten Variablen zu deklarieren. Das `var` Schlüsselwort mit explizitem Typ, oder die `:=` Kurzschreibweise, die den Typ aus dem Wert ableitet. Variablen, die mit `:=` in einer Funkti…
Snippet öffnen →Slices sind dynamische, wachsende Sequenzen in Go. Anders als Arrays können Slices ihre Größe ändern. Die `append` Funktion fügt Elemente hinzu und vergrößert automatisch das zugrunde liegende Arra…
Snippet öffnen →Go verwendet mehrfache Rückgabewerte für die Fehlerbehandlung, ein grundlegendes Entwurfsmuster. Funktionen geben sowohl einen Wert als auch einen Fehler zurück. Der Fehler ist nil bei Erfolg, sons…
Snippet öffnen →Go hat nur ein Schleifen-Schlüsselwort: `for`. Es gibt kein `while` Schlüsselwort. Die `for` Schleife ohne Initialisierung und Post-Anweisungen funktioniert wie eine While-Schleife. Dies macht Go e…
Snippet öffnen →Das `range` Schlüsselwort iteriert über Slices und Maps. Es gibt zwei Werte zurück: Index und Element. Der Unterstrich `_` wird verwendet, wenn man einen Wert nicht benötigt, und teilt Go mit, ihn…
Snippet öffnen →Maps in Go sind ungeordnete Key-Value-Datenstrukturen. Sie werden mit dem eingebauten `map`-Keyword und der Syntax `map[SchluesselTyp]WertTyp` erstellt. Du kannst Einträge mit Klammernotation hinzu…
Snippet öffnen →Structs sind zusammengesetzte Typen, die verwandte Felder gruppieren. Du definierst ein Struct mit dem `type`-Keyword und erstellst Instanzen mit geschweifter Klammer-Initialisierung. Methoden könn…
Snippet öffnen →Zeiger speichern Speicheradressen statt Werte. Der `&`-Operator gibt einen Zeiger auf eine Variable, während `*` einen Zeiger dereferenziert um auf den Wert zuzugreifen. In `double` erwartet der `*…
Snippet öffnen →Go's switch ist flexibler als in vielen anderen Sprachen. Es kann gegen Werte oder Bedingungen ohne Ausdruck vergleichen. Cases fallen nicht standardmäßig durch (kein break nötig), aber du kannst `…
Snippet öffnen →Das `defer`-Keyword plant einen Funktionsaufruf zur Ausführung wenn die umgebende Funktion zurückkehrt. Dies ist essentiell für Aufräumen wie Schließen von Dateien oder Freigeben von Ressourcen. Ve…
Snippet öffnen →Das Schlüsselwort `iota` erzeugt aufeinanderfolgende unveränderliche Ganzzahlkonstanten. Im ersten Block erstellt es Farbcodes (1, 2, 3). Im zweiten Block erzeugt `1 << iota` Bitflags (1, 2, 4). De…
Snippet öffnen →Variadische Funktionen akzeptieren null oder mehr Argumente mit der `...T` Syntax. Innerhalb der Funktion wird die Variable ein Slice. Sie können auch erforderliche Parameter vor dem variadischen T…
Snippet öffnen →Go-Strings sind Byte-Arrays, keine Rune-Arrays. `len(s)` gibt Byte-Anzahl zurück, was sich bei Unicode unterscheidet. Verwende `len([]rune(s))` für tatsächliche Zeichenanzahl. Slice Bytes direkt mi…
Snippet öffnen →Methoden können mit Wert-Empfängern oder Pointer-Empfängern definiert werden. Pointer-Empfänger modifizieren die originale Struct, während Wert-Empfänger auf einer Kopie arbeiten. Für veränderliche…
Snippet öffnen →Empty Interface `interface{}` akzeptiert jeden Typ. Type-Assertionen extrahieren den zugrunde liegenden Typ mit `i.(type)` im Switch oder `i.(T)` für direkte Assertion. Das Komma-Ok-Idiom prüft, ob…
Snippet öffnen →Go verwendet Pakete, um Code in modulare Einheiten zu organisieren. Die Import-Anweisung bringt externe Pakete aus der Standardbibliothek oder Drittanbieterquellen ein. Pakete wie fmt für formatier…
Snippet öffnen →Go ist eine statisch typisierte Sprache mit expliziter Typdeklaration. Die grundlegenden Typen umfassen int für Ganzzahlen, float64 für Dezimalzahlen, bool für Wahrheitswerte und string für Text. G…
Snippet öffnen →If-Anweisungen in Go werten boolesche Bedingungen aus und führen entsprechende Codeblöcke aus. Im Gegensatz zu vielen anderen Sprachen verwendet Go keine Klammern um Bedingungen. Die else if-Kette…
Snippet öffnen →Goroutinen sind leichtgewichtige Threads, die von der Go-Laufzeit verwaltet werden und nebenläufige Ausführung ermöglichen. Stelle einfach das Präfix 'go' vor einen Funktionsaufruf, um ihn nebenläu…
Snippet öffnen →Go bietet integrierte Testunterstützung durch das testing-Paket. Testdateien werden mit der Endung _test.go benannt. Testfunktionen beginnen mit dem Präfix Test und erhalten ein *testing.T-Argument…
Snippet öffnen →