Menu
Coddy logo textTech

Die `goto`-Anweisung

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy. Lektion 4 von 68.

Die goto-Anweisung in Go ermöglicht es Ihnen, die Steuerung direkt an eine markierte Anweisung innerhalb derselben Funktion zu übertragen. Obwohl Go diese Funktion enthält, wird sie in der modernen Go-Programmierung selten verwendet, da klarere Kontrollstrukturen wie Schleifen und if-Anweisungen bevorzugt werden.

Um goto zu verwenden, definieren Sie zuerst ein Label, indem Sie einen Bezeichner gefolgt von einem Doppelpunkt schreiben. Dann können Sie zu diesem Label springen, indem Sie goto gefolgt vom Labelnamen verwenden.

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

In diesem Beispiel springt das Programm zurück zum start-Label, bis die Bedingung nicht mehr erfüllt ist. Diese Logik wäre jedoch mit einer for-Schleife viel klarer. Die goto-Anweisung kann Code schwerer lesbar und wartbar machen, weshalb sie im Allgemeinen zugunsten eines strukturierten Kontrollflusses abgelehnt wird.

challenge icon

Aufgabe

Einfach

In dieser Herausforderung übst du die Verwendung der goto-Anweisung, um einen einfachen Wiederholungsmechanismus zu erstellen. Du entwickelst ein Verbindungssystem, das versucht, eine Verbindung herzustellen, und eine bestimmte Anzahl von Wiederholungsversuchen unternimmt, wenn dies fehlschlägt.

Du erhältst zwei Eingaben:

  • Eine Zeichenfolge, die die maximale Anzahl von Wiederholungsversuchen darstellt (z. B. "3")
  • Eine Zeichenfolge, die die Nummer des erfolgreichen Versuchs darstellt (z. B. "2")

Deine Aufgabe ist es:

  1. Die maximalen Wiederholungsversuche aus der ersten Eingabe zu analysieren
  2. Die Nummer des erfolgreichen Versuchs aus der zweiten Eingabe zu analysieren
  3. Eine goto-Anweisung mit einem Label zu verwenden, um die Wiederholungslogik zu implementieren
  4. Mit der Versuchsnummer 1 zu beginnen und sie nach jedem fehlgeschlagenen Versuch zu erhöhen
  5. Für jeden fehlgeschlagenen Versuch "Attempt [attempt_number] failed" auszugeben
  6. Wenn die Versuchsnummer mit der Nummer des erfolgreichen Versuchs übereinstimmt, "Attempt [attempt_number] succeeded" auszugeben und das Programm zu beenden
  7. Wenn du die maximale Anzahl von Wiederholungsversuchen ohne Erfolg überschreitest, "All attempts failed" auszugeben und das Programm zu beenden

Verwende die goto-Anweisung, um bei einem fehlgeschlagenen Versuch zum Wiederholungs-Label zurückzuspringen, sofern du die maximale Anzahl der Versuche noch nicht überschritten hast. Die Versuchsnummern sollten bei 1 beginnen.

Probier es selbst

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Eingabe lesen
    var maxRetriesStr string
    var successAttemptStr string
    fmt.Scanln(&maxRetriesStr)
    fmt.Scanln(&successAttemptStr)
    
    // Eingaben in Ganzzahlen umwandeln
    maxRetries, _ := strconv.Atoi(maxRetriesStr)
    successAttempt, _ := strconv.Atoi(successAttemptStr)
    
    // Versuchszähler initialisieren
    attempt := 1
    
    // TODO: Schreiben Sie Ihren Code unten
    // Verwenden Sie die goto-Anweisung mit einem Label, um die Retry-Logik zu implementieren
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler