Go Academy · leksjon

Flere returverdier

Returnere tupler og bruke feil­mønsteret

Leksjon 2 av 412 trinn

Flere returverdier er en gratis leksjon i Go Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Go Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Go Academy inneholder totalt 4 leksjoner.

Hvorfor flere returverdier?

Go-funksjoner kan returnere flere verdier, slik at De slipper ut-parametere eller exceptions. Det vanligste mønsteret er å returnere et resultat og en error:

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

Håndtere flere returverdier

Den som kaller funksjonen, mottar alle returverdiene som en tuppel. Bruk _ til å forkaste verdier De ikke trenger:

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

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

Navngitte returverdier

Returverdier kan gis navn, slik at de blir variabler inne i funksjonen:

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
}

Naken retur

En return uten argumenter returnerer de navngitte returvariablene. Bruk dette med måte – bare i korte funksjoner der navnene forklarer seg selv:

  • Korte funksjoner: akseptabelt
  • Lange funksjoner: svekker lesbarheten – foretrekk eksplisitte returer

Mønsteret (verdi, feil)

Det kanoniske mønsteret for feilhåndtering i Go:

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)
}

Ignorer aldri feil

Det er farlig å ignorere feil med _. Anbefalte fremgangsmåter:

  • Kontroller alle feil, med mindre det finnes en spesifikk grunn til å la være
  • Pakk inn feil med kontekst ved hjelp av fmt.Errorf("op: %w", err)
  • Bruk log.Fatal eller panic bare ved programgrenser, ikke dypt inne i biblioteker

Retur med tre verdier

Noen funksjoner returnerer tre verdier, selv om dette er mindre vanlig:

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

Returnere structer eller flere verdier

Når bør du returnere en struct i stedet for flere verdier:

  • 2–3 sterkt relaterte verdier: flere returer fungerer fint
  • 4 eller flere verdier eller valgfrie felt: bruk en struct
  • Mønsteret (verdi, feil): alltid flere returer

Tilordne til eksisterende variabler

Bruk = (ikke :=) når du tilordner til variabler som allerede er deklarert utenfor kallet:

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

Flere returer i metodelenking

Go støtter ikke metodelenking direkte på flere returverdier (i motsetning til Rusts Result.map). Bruk mellomliggende variabler for å håndtere feil i hvert trinn:

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

Rask sjekk

Hva gjør en naken retur i Go?

Oppsummering: Flere returverdier

Flere returer er en sentral Go-idiom:

  • Funksjoner kan returnere flere verdier i en liste omgitt av parenteser
  • Mønsteret (verdi, feil) brukes overalt – kontroller alltid feilen
  • Navngitte returvariabler muliggjør nakne returer (bruk dette med måte)
  • Bruk _ til å forkaste verdier du ikke trenger
  • Foretrekk flere returer fremfor ut-parametere for renere API-er

Neste tema: variadiske funksjoner.

Gratis å komme i gang

Lær deg Go med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «Flere returverdier» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Go Academy, inkludert «Flere returverdier», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Go Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Flere returverdier»?

Returnere tupler og bruke feil­mønsteret Du øver på Go Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Go Academy?

Ingen tidligere erfaring er nødvendig. Go Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Flere returverdier»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Go Academy-leksjonen?

Ja. Alle Go Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om funksjoner og signaturer
  2. Flere returverdier
  3. Variadiske funksjoner
  4. defer, anonyme funksjoner og closures
← Tilbake til Go Academy