Belirli Bir Döngüye Devam Etme
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 3 / 68.
Belirli döngülerden çıkmak için break ile etiketleri kullanabildiğiniz gibi Go, etiketleri continue ifadesiyle kullanmanıza da olanak tanır. Etiketli bir continue, belirtilen döngünün geçerli yinelemesini atlar ve bir sonraki yinelemesine geçer.
Bu, özellikle iç içe döngülerde, yalnızca iç döngüye devam etmek yerine, iç döngünün içinden dış döngünün geçerli yinelemesinin geri kalanını atlamak istediğinizde kullanışlıdır.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}Bu örnekte, i == 1 && j == 0 olduğunda, continue outer ifadesi iç döngü ve "End of outer loop iteration" mesajı da dâhil olmak üzere dış döngünün geçerli yinelemesinin geri kalanını atlar. Program daha sonra doğrudan, i değerinin 2 olduğu dış döngünün bir sonraki yinelemesine geçer.
Görev
KolayBu görevde, iç içe döngülerin yürütülmesini kontrol etmek için etiketli continue ifadelerini kullanmayı uygulayacaksın. İç döngülerde bulunan koşullara göre belirli dış döngü yinelemelerini atlaması gereken bir veri işleme sistemi oluşturuyorsun.
İki girdi alacaksın:
- İşlenecek satır sayısını temsil eden bir dize (ör.
"4") - Atlama koşulu sayısını temsil eden bir dize (ör.
"3")
Aşağıdaki 2D veri dizisi sana sağlanmıştır:
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}Görevin:
- Kaç satır işleneceğini belirlemek için ilk girdiden satır sayısını ayrıştırmak
- İkinci girdiden atlama koşulu sayısını ayrıştırmak
- Verileri işlemek için etiketli bir
continueiçeren iç içe döngüler kullanmak - Her satır için o satırdaki her sütun değerini kontrol etmek
- Bir satırın herhangi bir sütununda atlama koşulu sayısını bulursan, o satırın geri kalan işlemlerini atlamak ve sonraki satıra geçmek için etiketli
continuekullanmak - Atlama koşulu sayısını içermeyen satırlar için
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"yazdırmak - Atlama koşulu sayısını içeren satırlar için
"Skipping row [row_number] due to condition"yazdırmak
Satır numaraları 0 tabanlı indeksleme kullanılarak bildirilmelidir (ilk satır 0'dır). Yalnızca ilk girdide belirtilen satır sayısını işleyin ve her satırın yalnızca ilk 5 sütununu kontrol edin.
Kendin dene
package main
import (
"fmt"
"strconv"
)
func main() {
// Girdiyi oku
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// Girdileri ayrıştır
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// Sağlanan 2D veri dizisi
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
}
// TODO: Kodunuzu aşağıya yazın
// Veriyi işlemek için etiketli continue ile iç içe döngüler kullanın
// Her satırı atlama koşulu numarası için kontrol edin
// Koşulun bulunup bulunmadığına göre uygun mesajları yazdırı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