Keluar dari Perulangan Bersarang
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 2 dari 68.
Saat bekerja dengan perulangan bersarang, pernyataan break biasa hanya keluar dari perulangan terdalam. Namun, Go menyediakan label yang memungkinkanmu keluar langsung dari perulangan luar, sehingga kamu dapat mengendalikan struktur perulangan yang kompleks dengan tepat.
Label adalah identifier yang diikuti titik dua dan kamu letakkan sebelum perulangan. Kamu kemudian dapat menggunakan break diikuti nama label untuk keluar dari perulangan tertentu, bahkan dari dalam perulangan bersarang.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
}Dalam contoh ini, saat kondisi i == 1 && j == 1 terpenuhi, break outer langsung keluar dari perulangan bagian dalam dan bagian luar. Ini sangat berguna saat menelusuri struktur data 2D ketika kamu ingin menghentikan seluruh pencarian begitu menemukan yang kamu cari.
Tantangan
MudahDalam tantangan ini, kamu akan berlatih menggunakan pernyataan break berlabel untuk keluar dari perulangan bersarang saat menelusuri kisi 2D. Kamu perlu menemukan angka target tertentu di dalam kisi dan segera berhenti mencari setelah menemukannya.
Kamu akan menerima dua input:
- String yang mewakili dimensi kisi dengan format
"rows,cols"(misalnya,"3,4") - String yang mewakili angka target yang dicari (misalnya,
"7")
Kamu diberi kisi 2D berisi angka berikut:
grid := [][]int{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}Tugasmu adalah:
- Gunakan nilai yang sudah dibaca untukmu dalam kode di atas:
rowsdancols(seberapa banyak bagian kisi yang perlu ditelusuri),target, dangrid - Gunakan perulangan bersarang dengan
breakberlabel untuk menelusuri kisi - Saat menemukan angka target, cetak
"Found [target] at position ([row], [col])"dan segera keluar dari kedua perulangan menggunakanbreakberlabel - Jika kamu menyelesaikan pencarian tanpa menemukan target, cetak
"Target [target] not found"
Posisi harus dilaporkan menggunakan indeks berbasis 0 (baris pertama adalah 0, kolom pertama adalah 0).
Coba sendiri
// TODO: Tulis kodemu di bawah ini
// Gunakan perulangan bersarang dengan break berlabel untuk mencari target
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