1 Przegląd instrukcji pętli
W języku Go instrukcje pętli pozwalają nam wielokrotnie wykonywać blok kodu. Gdy potrzebujemy wielokrotnie wykonywać określone operacje, instrukcje pętli stają się bardzo użyteczne. Na przykład, możesz chcieć przeiterować przez każdy element tablicy lub powtarzać operację aż do spełnienia określonego warunku. W Go, instrukcje pętli są głównie implementowane za pomocą słowa kluczowego for
, które stanowi jedyną instrukcję pętli w języku Go. Prawidłowe użycie instrukcji pętli jest kluczowe dla pisania wydajnego i łatwego w utrzymaniu kodu.
2 Podstawy pętli for
2.1 Struktura pętli for
Pętla for
w języku Go składa się z trzech części:
- Deklaracja inicjalizacyjna: wykonywana przed pierwszą iteracją, zazwyczaj używana do zadeklarowania licznika pętli.
-
Wyrażenie warunkowe: oceniane przed każdą iteracją. Jeśli warunek jest
true
, wykonany zostanie blok pętli. - Instrukcja post: wykonywana po kodzie bloku każdej iteracji, zazwyczaj używana do aktualizacji licznika pętli.
Składnia pętli for
jest następująca:
for deklaracja inicjalizacyjna; wyrażenie warunkowe; instrukcja post {
// kod ciała pętli
}
2.2 Prosty przykład pętli for
Zrozumiejmy proces wykonywania pętli for
poprzez prosty przykład:
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println("Wartość i to:", i)
}
}
W tym przykładzie zmienna i
jest zainicjowana na 0
. Pętla for
sprawdza, czy warunek i < 5
jest prawdziwy. Jeśli warunek jest prawdziwy, wykonane zostanie ciało pętli i wydrukowana zostanie wartość i
. Po wykonaniu ciała pętli, wartość i
jest zaktualizowana za pomocą i++
(operacja inkrementacji), a następnie pętla ponownie sprawdza warunek, dopóki wartość i
nie osiągnie 5
, wtedy warunek staje się fałszywy, a pętla for
zostaje zakończona.
2.3 Inne przykłady pętli for
2.3.1 Nieskończona pętla
W Go można pomi
2.3.4 Pętla przez mapy
Podczas iteracji przez mapę, połączenie pętli for
i wyrażenia range
jest bardzo potężne. Dzięki temu możesz uzyskać każdą parę klucz-wartość z mapy.
kolory := map[string]string{"czerwony": "#ff0000", "zielony": "#00ff00", "niebieski": "#0000ff"}
for klucz, wartosc := range kolory {
fmt.Printf("Klucz: %s, Wartość: %s\n", klucz, wartosc)
}
W tym przykładzie drukujemy wszystkie klucze i ich odpowiadające wartości w mapie kolory
. Podobnie jak przy iterowaniu przez cięciwy, jeśli potrzebujesz tylko klucza lub wartości, możesz zdecydować się zignorować drugi.
Uwaga: Użycie map będzie wyjaśnione szczegółowo w kolejnych rozdziałach. Jeśli nie rozumiesz tego fragmentu, to nie ma problemu, o ile rozumiesz, że pętla
for
może być użyta w ten sposób.
3. Sterowanie pętlami
3.1 Użyj break
, aby zakończyć pętlę
Czasami musimy przedwcześnie przerwać pętlę, gdy spełniony jest określony warunek, a w takich przypadkach można użyć instrukcji break
. Poniżej znajduje się przykład użycia break
do przerwania pętli:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
break // Wyjście z pętli, gdy i równa się 5
}
fmt.Println("Wartość i to:", i)
}
// Wynik będzie zawierał jedynie wartości od 0 do 4
}
3.2 Użyj continue
, aby pominąć iteracje
W pewnych sytuacjach możemy chcieć pominąć bieżącą iterację i kontynuować z następną iteracją w pętli. Można to osiągnąć za pomocą instrukcji continue
. Oto przykład:
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i%2 != 0 {
continue // Pomiń tę iterację, jeśli i jest nieparzyste
}
fmt.Println("Liczba parzysta:", i)
}
}