Menu
CoddyTech

Il concetto di errore

Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 102 di 109.

In Go, gli errori sono valori che indicano che qualcosa è andato storto. Go gestisce gli errori in modo esplicito anziché usare le eccezioni.

Creiamo una funzione che potrebbe generare un errore quando divide dei numeri:

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

Questa funzione restituisce due valori: il risultato della divisione e un eventuale errore. Se il divisore è zero, restituiamo un messaggio di errore invece di tentare la divisione.

Ora usiamo la nostra funzione e gestiamo eventuali errori:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

Dopo aver eseguito questo codice, vedremo un messaggio di errore sullo schermo perché abbiamo provato a dividere per zero:

Error: cannot divide by zero

Questo dimostra il modello di gestione degli errori di Go: controlla se si è verificato un errore (err != nil) e poi intraprendi l'azione appropriata. Se non si è verificato alcun errore, possiamo usare il risultato in tutta sicurezza.

challenge icon

Sfida

Facile

In questa sfida, ti eserciterai a gestire gli errori in Go. Creerai una funzione che divide due numeri e restituisce un errore se si tenta di dividere per zero.

Il tuo compito è:

  1. Completare la funzione divide, che accetta due interi e restituisce il loro quoziente e un errore.
  2. Se il divisore è zero, restituisci 0 e un errore con il messaggio "division by zero".
  3. Se la divisione è valida, restituisci il risultato e nil come errore.
  4. Nella funzione main, chiama divide con i valori forniti e gestisci eventuali errori in modo appropriato.

Questo esercizio mostra come le funzioni Go restituiscano comunemente un risultato e un errore, e come controllare e gestire questi errori.

Provalo tu

package main
import (
    "errors"
    "fmt"
)
// divide divide a per b e restituisce il risultato
// Se b è 0, restituisce un errore
func divide(a, b int) (int, error) {
    // TODO: Implementa la funzione divide
    // Se b è 0, restituisci 0 e un errore con il messaggio "division by zero"
    // Altrimenti, restituisci a/b e nil come errore

}
func main() {
    // Primo caso di test
    a, b := 10, 2
    result, err := divide(a, b)
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    } else {
        fmt.Printf("Result: %d\n", result)
    }

    // Secondo caso di test
    a, b = 8, 0
    result, err = divide(a, b)
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    } else {
        fmt.Printf("Result: %d\n", result)
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Go online