Menu
CoddyTech

Pernyataan `goto`

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 4 dari 68.

Pernyataan goto di Go memungkinkan kamu memindahkan alur kendali langsung ke pernyataan berlabel di dalam fungsi yang sama. Meskipun Go memiliki fitur ini, fitur ini jarang digunakan dalam pemrograman Go modern karena struktur kendali yang lebih jelas, seperti perulangan dan pernyataan if, lebih disukai.

Untuk menggunakan goto, pertama-tama kamu mendefinisikan label dengan menulis identifier diikuti titik dua. Lalu, kamu bisa melompat ke label tersebut dengan menggunakan goto diikuti nama label.

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

Dalam contoh ini, program kembali ke label start sampai kondisinya tidak lagi terpenuhi. Namun, logika yang sama akan jauh lebih jelas jika menggunakan for loop. Pernyataan goto dapat membuat kode lebih sulit dibaca dan dipelihara, sehingga umumnya tidak disarankan dan sebaiknya diganti dengan alur kontrol terstruktur.

challenge icon

Tantangan

Mudah

Dalam tantangan ini, kamu akan berlatih menggunakan pernyataan goto untuk membuat mekanisme percobaan ulang yang sederhana. Kamu sedang membangun sistem koneksi yang mencoba membuat koneksi dan mengulanginya beberapa kali jika gagal.

Kamu akan menerima dua input:

  • String yang mewakili jumlah maksimum percobaan ulang (misalnya, "3")
  • String yang mewakili nomor percobaan yang akan berhasil (misalnya, "2")

Tugasmu:

  1. Ubah jumlah maksimum percobaan ulang dari input pertama menjadi angka
  2. Ubah nomor percobaan yang berhasil dari input kedua menjadi angka
  3. Gunakan pernyataan goto dengan label untuk menerapkan logika percobaan ulang
  4. Mulai dengan nomor percobaan 1 dan tambahkan 1 setelah setiap percobaan yang gagal
  5. Untuk setiap percobaan yang gagal, cetak "Attempt [attempt_number] failed"
  6. Saat nomor percobaan sama dengan nomor percobaan yang berhasil, cetak "Attempt [attempt_number] succeeded" lalu keluar
  7. Jika kamu melampaui jumlah maksimum percobaan ulang tanpa berhasil, cetak "All attempts failed" lalu keluar

Gunakan pernyataan goto untuk melompat kembali ke label percobaan ulang saat percobaan gagal dan kamu belum melampaui jumlah maksimum percobaan. Nomor percobaan harus dimulai dari 1.

Coba sendiri

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Baca input
    var maxRetriesStr string
    var successAttemptStr string
    fmt.Scanln(&maxRetriesStr)
    fmt.Scanln(&successAttemptStr)
    
    // Ubah input menjadi bilangan bulat
    maxRetries, _ := strconv.Atoi(maxRetriesStr)
    successAttempt, _ := strconv.Atoi(successAttemptStr)
    
    // Inisialisasi penghitung percobaan
    attempt := 1
    
    // TODO: Tulis kodemu di bawah ini
    // Gunakan pernyataan goto dengan label untuk menerapkan logika percobaan ulang
    
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online