1 Przegląd Instrukcji Warunkowych

Instrukcje warunkowe są ważnym narzędziem do kontrolowania logicznego przepływu programów w programowaniu. W języku Golang instrukcje warunkowe są podobne do tych w innych językach programowania, ale mają swoje własne cechy. Pozwalają nam decydować, który kod wykonać na podstawie warunków true lub false, co znacznie zwiększa elastyczność i czytelność kodu.

2 Instrukcja if

2.1 Podstawowe Użycie Instrukcji if

Instrukcja if jest najbardziej podstawową instrukcją warunkową w języku Go. Jej składnia jest następująca:

if warunek {
    // Kod do wykonania, gdy warunek jest prawdziwy
}

Oto prosty przykład:

package main

import "fmt"

func main() {
    x := 10
    if x > 5 {
        fmt.Println("x jest większe niż 5")
    }
}

Ten kod sprawdzi, czy x jest większe niż 5, a jeśli tak, wykona operację wydruku.

2.2 Wyrażenia Warunkowe

Wyrażenia warunkowe składają się z operatorów porównania (takich jak ==, !=, <, >, <=, >=) i operatorów logicznych (takich jak && (I), || (lub), ! (NIE)).

Na przykład, aby sprawdzić, czy zmienna mieści się w określonym zakresie:

y := 20
if y >= 10 && y <= 30 {
    fmt.Println("y mieści się między 10 a 30")
}

Powyższe wyrażenie warunkowe używa operatora logicznego && w celu zapewnienia, że wartość y znajduje się między 10 a 30.

2.3 Struktura if...else i else if

Gdy warunek if nie jest spełniony, możemy użyć else do wykonania alternatywnego bloku kodu. Instrukcja else if pozwala nam sprawdzać wiele warunków. Oto przykład:

wynik := 88

if wynik >= 90 {
    fmt.Println("Doskonały")
} else if wynik >= 80 {
    fmt.Println("Dobry")
} else if wynik >= 70 {
    fmt.Println("Przeciętny")
} else {
    fmt.Println("Poniżej przeciętnej")
}

Ten kod wydrukuje różne oceny w zależności od wartości wynik.

3 Instrukcja switch

3.1 Podstawowa Składnia switch

Instrukcja switch jest bardziej zwięzłą instrukcją warunkową, zwłaszcza w sytuacjach, gdy potrzebna jest ocena wielu wartości. Podstawowa składnia instrukcji switch jest następująca:

switch wyrażenie {
case wartość1:
    // Kod do wykonania, gdy wartość pasuje do wartość1
case wartość2:
    // Kod do wykonania, gdy wartość pasuje do wartość2
default:
    // Kod do wykonania domyślnie
}

Jeśli wartość wyrażenia pasuje do wartości po słowie kluczowym case, odpowiedni blok kodu zostanie wykonany.

3.2 Przepływ Fallthrough w switch

W instrukcji switch języka Go, każda gałąź domyślnie nie przechodzi do następnego przypadku, chyba że użyte jest słowo kluczowe fallthrough.

switch num {
case 1:
    fmt.Println("Jeden")
    fallthrough
case 2:
    fmt.Println("Dwa")
default:
    fmt.Println("Ani Jeden, ani Dwa")
}

W powyższym kodzie, jeśli num jest równe 1, nawet jeśli pasuje do case 1, ze względu na obecność słowa kluczowego fallthrough, program będzie kontynuował wykonywanie kodu w case 2 i wydrukuje "Dwa".

3.3 Rozgałęzianie Typów i Indywidualne Rozgałęzianie

Instrukcja switch obsługuje również rozgałęzianie oparte na typach zmiennych, nazywane typowym rozgałęzianiem. Dodatkowo możemy tworzyć bardziej złożone warunki indywidualnego rozgałęziania.

Przykład rozgałęziania typów:

var i interface{} = 1

switch i.(type) {
case int:
    fmt.Println("i jest liczbą całkowitą")
case float64:
    fmt.Println("i jest float64")
default:
    fmt.Println("i jest innego typu")
}

Warunki indywidualnego rozgałęziania można pisać, aby wykonywać bardziej złożone oceny warunkowe w miarę potrzeb.

4 Ćwiczenie praktyczne

W tej sekcji pogłębimy nasze zrozumienie i zastosowanie instrukcji warunkowych w Golang poprzez konkretne przykłady. Poprzez praktyczne wyzwania programistyczne, staniesz się bardziej biegły w używaniu instrukcji if i switch do rozwiązywania życiowych problemów.

Kalkulator ocen

Napiszmy prosty kalkulator ocen. Ten program będzie określał i wypisywał odpowiednią ocenę na podstawie wyniku wprowadzonego przez użytkownika. Kryteria oceniania są następujące:

  • A dla wyników 90 i więcej
  • B dla wyników od 80 do 89
  • C dla wyników od 70 do 79
  • D dla wyników od 60 do 69
  • F dla wyników poniżej 60

Do zaimplementowania tej funkcjonalności możemy użyć instrukcji warunkowej if lub wyrażenia switch. Najpierw przyjrzyjmy się przykładowi z użyciem instrukcji if:

package main

import (
	"fmt"
)

func main() {
	var wynik int
	fmt.Print("Proszę podaj wynik: ")
	fmt.Scan(&wynik)

	if wynik >= 90 {
		fmt.Println("Ocena: A")
	} else if wynik >= 80 {
		fmt.Println("Ocena: B")
	} else if wynik >= 70 {
		fmt.Println("Ocena: C")
	} else if wynik >= 60 {
		fmt.Println("Ocena: D")
	} else {
		fmt.Println("Ocena: F")
	}
}

W powyższym kodzie najpierw deklarujemy zmienną wynik, aby przechować wprowadzony przez użytkownika wynik. Używamy funkcji fmt.Scan, aby pobrać wprowadzony przez użytkownika wynik. Następnie korzystamy z kilku instrukcji if oraz else if, aby określić odpowiednią ocenę dla wyniku i używamy funkcji fmt.Println, aby wyprowadzić ocenę.

Następnie przyjrzyjmy się przykładowi z użyciem wyrażenia switch:

package main

import (
	"fmt"
)

func main() {
	var wynik int
	fmt.Print("Proszę podaj wynik: ")
	fmt.Scan(&wynik)

	switch {
	case wynik >= 90:
		fmt.Println("Ocena: A")
	case wynik >= 80:
		fmt.Println("Ocena: B")
	case wynik >= 70:
		fmt.Println("Ocena: C")
	case wynik >= 60:
		fmt.Println("Ocena: D")
	default:
		fmt.Println("Ocena: F")
	}
}

W przykładzie z użyciem wyrażenia switch, struktura kodu jest bardziej zwięzła i czytelna. Nie musimy używać wielu kolejnych instrukcji if oraz else if; zamiast tego bezpośrednio określamy warunki w każdym przypadku po wyrażeniu switch. Wynik, który nie pasuje do warunku poprzedniego przypadku, automatycznie przechodzi do następnego przypadku, aż pasuje do odpowiadającej mu gałęzi warunkowej lub dochodzi do przypadku default, który drukuje ocenę F.

Teraz, gdy nauczyłeś się jak używać if oraz switch do warunkowych ocen, spróbuj napisać swój własny program i praktykować, aby pogłębić swoje zrozumienie.

W następnym dziale będziemy kontynuować wprowadzanie bardziej praktycznych problemów, aby pomóc wzmocnić Twoje opanowanie instrukcji warunkowych w Golang.

Prosimy zauważyć, że powyższy kod służy celom instruktażowym. W praktycznych zastosowaniach należy wziąć pod uwagę czynniki takie jak interakcja z użytkownikiem oraz obsługa błędów, aby uczynić go bardziej solidnym.