Menu
Coddy logo textTech

`goto` İfadesi

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 4 / 68.

Go'daki goto ifadesi, kontrolü aynı fonksiyon içindeki etiketlenmiş bir ifadeye doğrudan aktarmanıza olanak tanır. Go bu özelliği içerse de, döngüler ve if ifadeleri gibi daha net kontrol yapıları tercih edildiğinden modern Go programlamasında nadiren kullanılır.

goto kullanmak için, önce bir tanımlayıcı ve ardından iki nokta üst üste yazarak bir etiket tanımlarsınız. Daha sonra, goto ve ardından etiket adını kullanarak o etikete atlayabilirsiniz.

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

Bu örnekte program, koşul artık sağlanmayana kadar start etiketine geri döner. Ancak, bu aynı mantık bir for döngüsü kullanılarak çok daha net olurdu. goto ifadesi kodun okunmasını ve bakımını zorlaştırabilir, bu yüzden yapılandırılmış kontrol akışı lehine genellikle önerilmez.

challenge icon

Görev

Kolay

Bu meydan okumada, basit bir yeniden deneme mekanizması oluşturmak için goto ifadesini kullanma pratiği yapacaksınız. Bir bağlantı kurmaya çalışan ve başarısız olması durumunda belirli sayıda yeniden deneme yapan bir bağlantı sistemi oluşturuyorsunuz.

İki girdi alacaksınız:

  • Maksimum yeniden deneme sayısını temsil eden bir dize (ör. "3")
  • Başarılı olacak deneme numarasını temsil eden bir dize (ör. "2")

Göreviniz:

  1. İlk girdiden maksimum yeniden deneme sayısını ayrıştırmak
  2. İkinci girdiden başarılı deneme numarasını ayrıştırmak
  3. Yeniden deneme mantığını uygulamak için etiketle birlikte bir goto ifadesi kullanmak
  4. Deneme numarasını 1'den başlatmak ve her başarısız denemeden sonra artırmak
  5. Başarısız olan her deneme için "Attempt [attempt_number] failed" yazdırmak
  6. Deneme numarası başarılı deneme numarasıyla eşleştiğinde "Attempt [attempt_number] succeeded" yazdırmak ve çıkmak
  7. Başarılı olmadan maksimum yeniden deneme sayısını aşarsanız "All attempts failed" yazdırmak ve çıkmak

Bir deneme başarısız olduğunda ve maksimum deneme sayısını aşmadığınızda yeniden deneme etiketine geri dönmek için goto ifadesini kullanın. Deneme numaraları 1'den başlamalıdır.

Kendin dene

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Girdiyi oku
    var maxRetriesStr string
    var successAttemptStr string
    fmt.Scanln(&maxRetriesStr)
    fmt.Scanln(&successAttemptStr)
    
    // Girdileri tam sayılara dönüştür
    maxRetries, _ := strconv.Atoi(maxRetriesStr)
    successAttempt, _ := strconv.Atoi(successAttemptStr)
    
    // Deneme sayacını başlat
    attempt := 1
    
    // YAPILACAK: Kodunuzu aşağıya yazın
    // Yeniden deneme mantığını uygulamak için bir etiketle goto ifadesini kullanın
    
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi