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.
Tantangan
MudahDalam 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:
- Ubah jumlah maksimum percobaan ulang dari input pertama menjadi angka
- Ubah nomor percobaan yang berhasil dari input kedua menjadi angka
- Gunakan pernyataan
gotodengan label untuk menerapkan logika percobaan ulang - Mulai dengan nomor percobaan 1 dan tambahkan 1 setelah setiap percobaan yang gagal
- Untuk setiap percobaan yang gagal, cetak
"Attempt [attempt_number] failed" - Saat nomor percobaan sama dengan nomor percobaan yang berhasil, cetak
"Attempt [attempt_number] succeeded"lalu keluar - 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
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online