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 →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 →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 →Slices sind dynamische Ansichten auf Arrays. Anders als Arrays mit fester Größe können Slices mit append() wachsen oder schrumpfen. Die make()-Funktion erstellt ein Slice mit vorab reservierter Kap…
Snippet öffnen →Go hat nur eine Schleifenkonstruktion: for. Sie kann als klassische Dreiteiler-for-Schleife, eine while-artige Schleife oder eine Endlosschleife mit break fungieren. Die range-Klausel iteriert über…
Snippet öffnen →