Menu
Coddy logo textTech

L'instruction `goto`

Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 4 sur 68.

L'instruction goto en Go vous permet de transférer le contrôle directement vers une instruction étiquetée au sein de la même fonction. Bien que Go inclue cette fonctionnalité, elle est rarement utilisée dans la programmation Go moderne car des structures de contrôle plus claires comme les boucles et les instructions if sont préférées.

Pour utiliser goto, vous définissez d'abord une étiquette en écrivant un identifiant suivi d'un deux-points. Ensuite, vous pouvez sauter vers cette étiquette en utilisant goto suivi du nom de l'étiquette.

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

Dans cet exemple, le programme revient à l'étiquette start jusqu'à ce que la condition ne soit plus remplie. Cependant, cette même logique serait beaucoup plus claire en utilisant une boucle for. L'instruction goto peut rendre le code plus difficile à lire et à maintenir, c'est pourquoi elle est généralement déconseillée au profit d'un flux de contrôle structuré.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Dans ce défi, vous allez vous entraîner à utiliser l'instruction goto pour créer un mécanisme de tentative simple. Vous construisez un système de connexion qui tente d'établir une connexion et réessaie un nombre spécifique de fois en cas d'échec.

Vous recevrez deux entrées :

  • Une chaîne de caractères représentant le nombre maximum de tentatives (par exemple, "3")
  • Une chaîne de caractères représentant le numéro de la tentative qui réussira (par exemple, "2")

Votre tâche consiste à :

  1. Analyser le nombre maximum de tentatives à partir de la première entrée
  2. Analyser le numéro de la tentative réussie à partir de la seconde entrée
  3. Utiliser une instruction goto avec une étiquette pour implémenter la logique de tentative
  4. Commencer par la tentative numéro 1 et incrémenter après chaque échec
  5. Pour chaque tentative qui échoue, afficher "Attempt [attempt_number] failed"
  6. Lorsque le numéro de la tentative correspond au numéro de la tentative réussie, afficher "Attempt [attempt_number] succeeded" et quitter
  7. Si vous dépassez le nombre maximum de tentatives sans succès, afficher "All attempts failed" et quitter

Utilisez l'instruction goto pour revenir à l'étiquette de tentative lorsqu'une tentative échoue et que vous n'avez pas dépassé le nombre maximum de tentatives. Les numéros de tentative doivent commencer à 1.

Aide-mémoire

L'instruction goto transfère le contrôle directement à une instruction étiquetée au sein de la même fonction. Définissez une étiquette avec un identifiant suivi de deux-points, puis sautez vers celle-ci en utilisant goto :

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

Bien que goto soit disponible en Go, il est rarement utilisé dans la programmation Go moderne car les structures de contrôle de flux comme les boucles et les instructions if sont plus claires et plus faciles à maintenir.

Essayez vous-même

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Lire l'entrée
    var maxRetriesStr string
    var successAttemptStr string
    fmt.Scanln(&maxRetriesStr)
    fmt.Scanln(&successAttemptStr)
    
    // Convertir les entrées en entiers
    maxRetries, _ := strconv.Atoi(maxRetriesStr)
    successAttempt, _ := strconv.Atoi(successAttemptStr)
    
    // Initialiser le compteur de tentatives
    attempt := 1
    
    // À FAIRE : Écrivez votre code ci-dessous
    // Utiliser l'instruction goto avec une étiquette pour implémenter la logique de réessai
    
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux