Menu
Coddy logo textTech

Funzioni che restituiscono errori

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

In Go, le funzioni restituiscono comunemente un error come ultimo valore restituito per indicare se qualcosa è andato storto.

Crea una funzione che restituisca sia un risultato sia un errore:

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

Chiama la funzione e gestisci l'errore:

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

L'output sarà:

Error: cannot divide by zero
challenge icon

Sfida

Principiante

In questa sfida, ti eserciterai a creare una funzione che restituisce un errore quando viene fornito un input non valido.

Devi completare la funzione validateUsername che verifica se un nome utente è valido. Un nome utente è valido se è lungo almeno 3 caratteri. Se il nome utente è valido, restituisci nil per l'errore. Se non è valido, restituisci un errore con un messaggio appropriato.

Il codice per chiamare la tua funzione e gestire l'errore è già scritto.

Nota: Questa sfida usa variabili predefinite invece dell'input dell'utente.

Provalo tu

package main

import (
	"errors"
	"fmt"
)

func validateUsername(username string) error {
	// TODO: Verifica se la lunghezza del nome utente è inferiore a 3 caratteri
	// In tal caso, restituisci un errore con il messaggio "username too short"
	// Altrimenti, restituisci nil (nessun errore)
	
	return nil
}

func main() {
	// Prova con un nome utente valido
	validName := "bob123"
	err1 := validateUsername(validName)
	if err1 != nil {
		fmt.Printf("%s is invalid: %v\n", validName, err1)
	} else {
		fmt.Printf("%s is valid!\n", validName)
	}
	
	// Prova con un nome utente non valido
	invalidName := "ab"
	err2 := validateUsername(invalidName)
	if err2 != nil {
		fmt.Printf("%s is invalid: %v\n", invalidName, err2)
	} else {
		fmt.Printf("%s is valid!\n", invalidName)
	}
}
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