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:

  1. Deklaracja inicjalizacyjna: wykonywana przed pierwszą iteracją, zazwyczaj używana do zadeklarowania licznika pętli.
  2. Wyrażenie warunkowe: oceniane przed każdą iteracją. Jeśli warunek jest true, wykonany zostanie blok pętli.
  3. 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)
    }
}