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 etiketleri break ile kullanabildiğiniz gibi, Go, etiketleri continue ifadesiyle kullanmanıza da olanak tanır. Etiketli bir continue, belirtilen döngünün mevcut yinelemesini atlar ve bir sonraki yinelemesine geçer.
Bu, özellikle iç döngünün içinden sadece iç döngüye devam etmek yerine, dış döngünün mevcut yinelemesinin geri kalanını atlamak istediğinizde iç içe döngülerde yararlı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 dahil olmak üzere dış döngünün mevcut yinelemesinin geri kalanını atlar. Program daha sonra doğrudan i'nin 2 olduğu dış döngünün bir sonraki yinelemesine geçer.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayBu meydan okumada, iç içe geçmiş döngü yürütmesini kontrol etmek için etiketli continue ifadelerini kullanma pratiği yapacaksınız. İç döngülerde bulunan koşullara bağlı olarak belirli dış döngü yinelemelerini atlaması gereken bir veri işleme sistemi oluşturuyorsunuz.
İki girdi alacaksınız:
- İşlenecek satır sayısını temsil eden bir dize (örneğin,
"4") - Bir atlama koşulu sayısını temsil eden bir dize (örneğin,
"3")
Size aşağıdaki 2D veri dizisi 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öreviniz şunları yapmaktır:
- Kaç satırın işleneceğini belirlemek için ilk girdiden satır sayısını ayrıştırın
- İkinci girdiden atlama koşulu sayısını ayrıştırın
- Verileri işlemek için etiketli bir
continueile iç içe geçmiş döngüler kullanın - Her satır için, o satırdaki her sütun değerini kontrol edin
- Bir satırın herhangi bir sütununda atlama koşulu sayısını bulursanız, o satırın işleminin geri kalanını atlamak ve bir sonraki satıra geçmek için etiketli
continuekullanın - Atlama koşulu sayısını içermeyen satırlar için,
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]"yazdırın - Atlama koşulu sayısını içeren satırlar için,
"Skipping row [row_number] due to condition"yazdırın
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.
Kopya kağıdı
İç içe döngülerde belirli bir döngünün mevcut yinelemesini atlamak için etiketleri continue ile birlikte kullanın:
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")
}continue outer çalıştırıldığında, dış döngünün mevcut yinelemesinin geri kalanını atlar ve doğrudan etiketli döngünün bir sonraki yinelemesine atlar.
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
// Verileri işlemek için etiketli continue (labeled continue) ile iç içe döngüler kullanın
// Her satırı atlama koşulu sayısı için kontrol edin
// Koşulun bulunup bulunmadığına bağlı olarak 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ışlar