Methoden mit Receivern ·
Interfaces ·
Closures ·
defer ·
Variadic Functions ·
init-Funktionen
Go bietet eine flexible und elegante Behandlung von Funktionen und Methoden – mit Receivern für Typerweiterungen, Interfaces für Polymorphie und Closures für funktionale Programmierung.
Methoden sind Funktionen mit einem speziellen Receiver-Argument, das sie an einen Typ bindet. Es gibt Wert-Receiver (Kopie) und Zeiger-Receiver (Modifikation des Originals).
Interfaces definieren eine Menge von Methoden. Ein Typ implementiert ein Interface implizit, indem er alle Methoden bereitstellt – ohne explizite Deklaration. Das ist Go's Form von Duck-Typing.
Closures sind anonyme Funktionen, die auf Variablen aus ihrem umgebenden Scope zugreifen können. Sie sind mächtige Werkzeuge für funktionale Programmierung und State-Management.
defer verzögert die Ausführung eines Funktionsaufrufs bis zum Ende der umgebenden Funktion. Mehrere defer-Aufrufe werden in LIFO-Reihenfolge (Last In, First Out) ausgeführt.
defer ist ideal für Aufräumarbeiten (Dateien schließen, Mutex freigeben, DB-Transaktionen beenden). Die LIFO-Reihenfolge ist wichtig für verschachtelte Ressourcen.
Variadic Functions können eine beliebige Anzahl von Argumenten eines Typs entgegennehmen. Das ...-Syntax wandelt die Argumente in ein Slice um.
...-Syntax kann auch verwendet werden, um ein Slice an eine variadic Function zu übergeben. Das ist eine elegante Möglichkeit, Slices zu expandieren.
init-Funktionen werden automatisch beim Import eines Packages ausgeführt – vor der main-Funktion. Sie können in jeder Go-Datei definiert werden und werden in der Reihenfolge ihrer Deklaration ausgeführt.
init-Funktionen werden in der Reihenfolge ihrer Deklaration ausgeführt – zuerst alle init der importierten Packages, dann die der aktuellen Datei. Verwenden Sie sie für Setup-Logik wie das Laden von Konfigurationen.
func (r T)
interface
func()
defer
...
init
func (r Rectangle) Area() float64 { return r.W * r.H } ·
defer f.Close() ·
func sum(nums ...int) int { ... }