0Pricing
Go Academy · Lektion

Mehrere Rückgabewerte

Tupel zurückgeben und das Error-Pattern

Mehrere Rückgabewerte ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum mehrere Rückgabewerte?

Go-Funktionen können mehrere Werte zurückgeben. Dadurch sind Ausgabeparameter oder Ausnahmen nicht erforderlich. Das häufigste Muster ist die Rückgabe eines Ergebnisses und eines Fehlers:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

Mehrere Rückgabewerte verarbeiten

Aufrufer erhalten alle Rückgabewerte als Tupel. Verwenden Sie _, um nicht benötigte Werte zu verwerfen:

result, err := divide(10, 3)
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

value, _ := divide(8, 2) // discard error

Benannte Rückgabewerte

Rückgabewerte können benannt werden, wodurch sie innerhalb der Funktion zu Variablen werden:

func minMax(nums []int) (min, max int) {
    min, max = nums[0], nums[0]
    for _, n := range nums[1:] {
        if n < min { min = n }
        if n > max { max = n }
    }
    return // naked return
}

Nackte Rückgaben

Ein return ohne Argumente gibt die benannten Rückgabevariablen zurück. Verwenden Sie dies sparsam – nur in kurzen Funktionen, deren Namen selbsterklärend sind:

  • Kurze Funktionen: akzeptabel
  • Lange Funktionen: beeinträchtigt die Lesbarkeit – bevorzugen Sie explizite Rückgaben

Das (value, error)-Muster

Das kanonische Go-Muster zur Fehlerbehandlung:

func readConfig(path string) (Config, error) {
    data, err := os.ReadFile(path)
    if err != nil {
        return Config{}, fmt.Errorf("read config: %w", err)
    }
    var cfg Config
    return cfg, json.Unmarshal(data, &cfg)
}

Fehler niemals ignorieren

Das Ignorieren von Fehlern mit _ ist gefährlich. Bewährte Vorgehensweisen:

  • Prüfen Sie jeden Fehler, sofern Sie keinen konkreten Grund haben, dies nicht zu tun
  • Umschließen Sie Fehler mit Kontext, indem Sie fmt.Errorf("op: %w", err) verwenden
  • Verwenden Sie log.Fatal oder panic nur an den Grenzen des Programms, nicht tief in Bibliotheken

Rückgaben mit drei Werten

Einige Funktionen geben drei Werte zurück, obwohl dies weniger häufig vorkommt:

func parseIPPort(s string) (ip string, port int, err error) {
    // ... parsing logic
    return
}

Structs oder mehrere Rückgabewerte

Wann Sie einen Struct und wann Sie mehrere Werte zurückgeben sollten:

  • 2–3 eng zusammengehörende Werte: mehrere Rückgabewerte sind in Ordnung
  • 4 oder mehr Werte oder optionale Felder: Verwenden Sie einen Struct
  • Das (value, error)-Muster: immer mehrere Rückgabewerte

Zuweisen zu bereits vorhandenen Variablen

Verwenden Sie = (nicht :=), wenn Sie Variablen zuweisen, die außerhalb des Aufrufs bereits deklariert wurden:

var cfg Config
var err error
cfg, err = loadConfig()
if err != nil { ... }

Mehrere Rückgabewerte beim Verketten von Methoden

Go unterstützt kein direktes Verketten von Methoden mit mehreren Rückgabewerten (anders als Rusts Result.map). Verwenden Sie Zwischenvariablen, um Fehler in jedem Schritt zu behandeln:

data, err := fetchData(url)
if err != nil { return err }
parsed, err := parseData(data)
if err != nil { return err }
return save(parsed)

Kurze Überprüfung

Was bewirkt eine nackte Rückgabe in Go?

Rückblick: Mehrere Rückgabewerte

Mehrere Rückgabewerte sind ein grundlegendes Go-Idiom:

  • Funktionen können mehrere Werte in einer Liste in Klammern zurückgeben
  • Das (value, error)-Muster ist allgegenwärtig – prüfen Sie den Fehler immer
  • Benannte Rückgabevariablen ermöglichen nackte Rückgaben (verwenden Sie diese sparsam)
  • Verwenden Sie _, um nicht benötigte Werte zu verwerfen
  • Bevorzugen Sie mehrere Rückgabewerte gegenüber Ausgabeparametern für übersichtlichere APIs

Als Nächstes: variadische Funktionen.

Häufig gestellte Fragen

Ist die Lektion „Mehrere Rückgabewerte“ kostenlos?

Ja — der vollständige Text von „Mehrere Rückgabewerte“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Mehrere Rückgabewerte“?

Tupel zurückgeben und das Error-Pattern Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Mehrere Rückgabewerte“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen und Signaturen von Funktionen
  2. Mehrere Rückgabewerte
  3. Variadische Funktionen
  4. defer, anonyme Funktionen und Closures
← Zurück zu Go Academy