Kontynuowanie określonej pętli
Część sekcji Logika i przepływ sterowania ścieżki GO w Coddy. Lekcja 3 z 68.
Tak jak możesz używać etykiet z instrukcją break, aby wychodzić z określonych pętli, Go pozwala również używać etykiet z instrukcją continue. Oznaczone etykietą continue pomija bieżącą iterację wskazanej pętli i przechodzi do następnej.
Jest to szczególnie przydatne w zagnieżdżonych pętlach, gdy chcesz pominąć resztę bieżącej iteracji pętli zewnętrznej z poziomu pętli wewnętrznej, zamiast po prostu kontynuować pętlę wewnętrzną.
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")
}W tym przykładzie, gdy i == 1 && j == 0, instrukcja continue outer pomija resztę bieżącej iteracji pętli zewnętrznej, w tym pętlę wewnętrzną i komunikat „End of outer loop iteration”. Program przechodzi wtedy bezpośrednio do następnej iteracji pętli zewnętrznej, w której i przyjmuje wartość 2.
Wyzwanie
ŁatwyW tym wyzwaniu przećwiczysz używanie instrukcji continue z etykietą do kontrolowania wykonywania zagnieżdżonych pętli. Budujesz system przetwarzania danych, który musi pomijać niektóre iteracje zewnętrznej pętli na podstawie warunków znalezionych w pętlach wewnętrznych.
Otrzymasz dwa dane wejściowe:
- Ciąg znaków reprezentujący liczbę wierszy do przetworzenia (np.
"4") - Ciąg znaków reprezentujący liczbę będącą warunkiem pominięcia (np.
"3")
Otrzymujesz następującą dwuwymiarową tablicę danych:
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}
}Twoje zadanie:
- Przeanalizować liczbę wierszy z pierwszego wejścia, aby określić, ile wierszy przetworzyć
- Przeanalizować liczbę będącą warunkiem pominięcia z drugiego wejścia
- Użyć zagnieżdżonych pętli z instrukcją
continuez etykietą do przetworzenia danych - Dla każdego wiersza sprawdzić wartość w każdej kolumnie tego wiersza
- Jeśli w którejkolwiek kolumnie wiersza znajdziesz liczbę będącą warunkiem pominięcia, użyć instrukcji
continuez etykietą, aby pominąć dalsze przetwarzanie tego wiersza i przejść do następnego wiersza - Dla wierszy, które nie zawierają liczby będącej warunkiem pominięcia, wypisać
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" - Dla wierszy, które zawierają liczbę będącą warunkiem pominięcia, wypisać
"Skipping row [row_number] due to condition"
Numery wierszy należy podawać przy indeksowaniu od 0 (pierwszy wiersz ma numer 0). Przetwarzaj tylko liczbę wierszy określoną w pierwszym wejściu i sprawdzaj tylko pierwszych 5 kolumn każdego wiersza.
Spróbuj swoich sił
package main
import (
"fmt"
"strconv"
)
func main() {
// Wczytaj dane wejściowe
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// Przetwórz dane wejściowe
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// Podana dwuwymiarowa tablica danych
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: Napisz swój kod poniżej
// Użyj zagnieżdżonych pętli z etykietowaną instrukcją continue, aby przetworzyć dane
// Sprawdź każdy wiersz pod kątem liczby określającej warunek pominięcia
// Wyświetl odpowiednie komunikaty w zależności od tego, czy warunek został spełniony
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowane sterowanie przepływem
Instrukcja switch z `fallthrough`Przerywanie zagnieżdżonych pętliKontynuowanie określonej pętliInstrukcja `goto`Podsumowanie — zaawansowane sterowanie pętlami4Projekt: Prosta lista zadań
Konfiguracja projektuDodawanie zadania2Struktury i metody
Definiowanie metod dla strukturOdbiorniki przez wartośćOdbiorniki przez wskaźnikWybór odbiornikówMetody a funkcjePodsumowanie — działanie struktur5Mapy w szczegółach
Mapy strukturWskaźniki jako wartości mapSprawdzanie, czy mapy są nilPorównywanie mapPodsumowanie — licznik częstości słów3Interfejsy (podstawy)
Czym jest interfejs?Definiowanie interfejsuImplementowanie interfejsuUżywanie typów interfejsowychPusty interfejsAsercje typuPrzełącznik typówPodsumowanie – kształty i zachowaniaPoćwicz samodzielnie: Kompilator Go online