Più valori restituiti
Restituire tuple e utilizzare il modello degli errori
Più valori restituiti è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Perché più valori restituiti?
Le funzioni di Go possono restituire più valori, eliminando la necessità di parametri di output o eccezioni. Lo schema più comune consiste nel restituire un risultato e un errore:
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}Gestire più valori restituiti
Il chiamante riceve tutti i valori restituiti come una tupla. Utilizzi _ per scartare i valori che non servono:
result, err := divide(10, 3)
if err != nil {
log.Fatal(err)
}
fmt.Println(result)
value, _ := divide(8, 2) // discard errorValori restituiti con nome
I valori restituiti possono avere un nome, trasformandosi in variabili all'interno della funzione:
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
}Return nudi
Un return senza argomenti restituisce le variabili di ritorno denominate. Lo utilizzi con moderazione, solo nelle funzioni brevi in cui i nomi sono autoesplicativi:
- Funzioni brevi: accettabile
- Funzioni lunghe: riduce la leggibilità; preferisca i return espliciti
Il pattern (value, error)
Il pattern canonico di gestione degli errori in 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)
}Non ignori mai gli errori
Ignorare gli errori con _ è pericoloso. Buone pratiche:
- Controlli ogni errore, a meno che non abbia un motivo specifico per non farlo
- Avvolga gli errori aggiungendo contesto con
fmt.Errorf("op: %w", err) - Utilizzi
log.Fatalo panic solo ai confini del programma, non in profondità nelle librerie
Restituzione di tre valori
Alcune funzioni restituiscono tre valori, anche se è meno comune:
func parseIPPort(s string) (ip string, port int, err error) {
// ... parsing logic
return
}Restituire struct o più valori
Quando restituire una struct invece di più valori:
- 2-3 valori strettamente correlati: più valori restituiti vanno bene
- 4 o più valori o campi opzionali: utilizzi una struct
- Il pattern (value, error): utilizzi sempre più valori restituiti
Assegnare a variabili esistenti
Utilizzi = (non :=) quando assegna valori a variabili già dichiarate al di fuori della chiamata:
var cfg Config
var err error
cfg, err = loadConfig()
if err != nil { ... }Più valori restituiti nelle catene di metodi
Go non supporta direttamente le catene di metodi su più valori restituiti (a differenza di Result.map in Rust). Utilizzi variabili intermedie per gestire gli errori a ogni passaggio:
data, err := fetchData(url)
if err != nil { return err }
parsed, err := parseData(data)
if err != nil { return err }
return save(parsed)Verifica rapida
Che cosa fa un return nudo in Go?
Riepilogo: più valori restituiti
La restituzione di più valori è un'idioma fondamentale di Go:
- Le funzioni possono restituire più valori in un elenco tra parentesi
- Il pattern (value, error) è onnipresente: controlli sempre l'errore
- Le variabili di ritorno denominate consentono di usare return nudi, da utilizzare con moderazione
- Utilizzi
_per scartare i valori che non servono - Preferisca più valori restituiti ai parametri di output per ottenere API più pulite
Prossimo argomento: le funzioni variadiche.
Domande Frequenti
La lezione «Più valori restituiti» è gratuita?
Sì — il testo completo di «Più valori restituiti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «Più valori restituiti»?
Restituire tuple e utilizzare il modello degli errori Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Più valori restituiti»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Basi e firme delle funzioni
- Più valori restituiti
- Funzioni variadiche
- defer, funzioni anonime e closure