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.