İç İçe Döngülerden Çıkma
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 2 / 68.
İç içe döngülerle çalışırken, normal bir break ifadesi yalnızca en içteki döngüden çıkar. Ancak Go, dış döngülerden doğrudan çıkmanı sağlayan etiketler sunar ve böylece karmaşık döngü yapıları üzerinde hassas bir kontrol elde edersin.
Etiket, bir döngünün önüne yerleştirdiğin ve ardından iki nokta üst üste gelen bir tanımlayıcıdır. Daha sonra, iç içe döngülerin içinden bile belirli bir döngüden çıkmak için break ifadesini ve ardından etiket adını kullanabilirsin.
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)
}
}Bu örnekte, i == 1 && j == 1 koşulu sağlandığında, break outer hem iç hem de dış döngüden hemen çıkar. Bu, özellikle aradığınızı bulduğunuzda aramayı tamamen durdurmak istediğiniz 2B veri yapılarında arama yaparken kullanışlıdır.
Görev
KolayBu meydan okumada, 2B bir ızgarada arama yaparken iç içe döngülerden çıkmak için etiketli break ifadelerini kullanma pratiği yapacaksın. Izgarada belirli bir hedef sayıyı bulman ve bulduğun anda aramayı durdurman gerekiyor.
İki girdi alacaksın:
- Izgaranın boyutlarını
"rows,cols"biçiminde temsil eden bir metin (ör."3,4") - Aranacak hedef sayıyı temsil eden bir metin (ör.
"7")
Aşağıdaki 2B sayı ızgarası sana veriliyor:
grid := [][]int{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}Görevin:
- Yukarıdaki kodda senin için zaten okunan değerleri kullan:
rowsvecols(ızgaranın ne kadarının aranacağı),targetvegrid - Izgarada arama yapmak için etiketli bir
breakkullanan iç içe döngüler kullan - Hedef sayıyı bulduğunda
"Found [target] at position ([row], [col])"yazdır ve etiketli break'i kullanarak hemen her iki döngüden de çık - Hedefi bulamadan aramayı tamamlarsan
"Target [target] not found"yazdır
Konum 0 tabanlı indeksleme kullanılarak belirtilmelidir (ilk satır 0, ilk sütun 0).
Kendin dene
// TODO: Kodunuzu aşağıya yazın
// Hedefi aramak için etiketli break ile iç içe döngüler kullanın
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
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve DavranışlarKendi başına pratik yap: Online Go derleyicisi