Menu
Coddy logo textTech

L'istruzione `goto`

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 4 di 68.

L'istruzione goto in Go consente di trasferire il controllo direttamente a un'istruzione etichettata all'interno della stessa funzione. Sebbene Go includa questa funzionalità, viene usata raramente nella programmazione Go moderna, perché si preferiscono strutture di controllo più chiare, come i cicli e le istruzioni if.

Per usare goto, prima definisci un'etichetta scrivendo un identificatore seguito da due punti. Poi puoi saltare a quell'etichetta usando goto seguito dal nome dell'etichetta.

func main() {
    i := 0
start:
    fmt.Println("Count:", i)
    i++
    if i < 3 {
        goto start
    }
    fmt.Println("Done!")
}

In questo esempio, il programma torna all'etichetta start finché la condizione non è più soddisfatta. Tuttavia, questa stessa logica sarebbe molto più chiara usando un ciclo for. L'istruzione goto può rendere il codice più difficile da leggere e mantenere, perciò in genere è sconsigliata a favore del flusso di controllo strutturato.

challenge icon

Sfida

Facile

In questa sfida, ti eserciterai a usare l'istruzione goto per creare un semplice meccanismo di ripetizione dei tentativi. Stai realizzando un sistema di connessione che prova a stabilire una connessione e riprova un numero specifico di volte se non ci riesce.

Riceverai due input:

  • Una stringa che rappresenta il numero massimo di tentativi (ad esempio, "3")
  • Una stringa che rappresenta il numero del tentativo che avrà successo (ad esempio, "2")

Il tuo compito è:

  1. Convertire il numero massimo di tentativi dal primo input
  2. Convertire il numero del tentativo riuscito dal secondo input
  3. Usare un'istruzione goto con un'etichetta per implementare la logica dei tentativi
  4. Iniziare con il tentativo numero 1 e incrementare il numero dopo ogni tentativo fallito
  5. Per ogni tentativo non riuscito, stampare "Attempt [attempt_number] failed"
  6. Quando il numero del tentativo corrisponde al numero del tentativo riuscito, stampare "Attempt [attempt_number] succeeded" e uscire
  7. Se superi il numero massimo di tentativi senza riuscire, stampare "All attempts failed" e uscire

Usa l'istruzione goto per tornare all'etichetta di ripetizione quando un tentativo non riesce e non hai superato il numero massimo di tentativi. I numeri dei tentativi devono iniziare da 1.

Provalo tu

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Leggi l'input
    var maxRetriesStr string
    var successAttemptStr string
    fmt.Scanln(&maxRetriesStr)
    fmt.Scanln(&successAttemptStr)
    
    // Converti gli input in numeri interi
    maxRetries, _ := strconv.Atoi(maxRetriesStr)
    successAttempt, _ := strconv.Atoi(successAttemptStr)
    
    // Inizializza il contatore dei tentativi
    attempt := 1
    
    // TODO: Scrivi il tuo codice qui sotto
    // Usa l'istruzione goto con un'etichetta per implementare la logica dei tentativi
    
}
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 Logica e flusso

Esercitati da solo: Compilatore Go online