Testowanie warunków za pomocą wyrażeń if/else
Najbardziej podstawowym przepływem sterowania w dowolnym języku programowania jest if/else
instrukcja . W języku if/else
Go instrukcje są proste. Ale musisz zrozumieć kilka różnic przed rozpoczęciem odczuwania wygodnego pisania programów Go.
Przyjrzyjmy się składni języka Go dla if
instrukcji.
Składnia instrukcji if
W przeciwieństwie do innych języków programowania, w języku Go nie potrzebujesz nawiasów w warunkach. Klauzula else
jest opcjonalna. Ale nawiasy klamrowe są nadal wymagane. Ponadto język Go nie oferuje obsługiternarnych if
instrukcji w celu zmniejszenia liczby wierszy, dlatego należy za każdym razem napisać pełną if
instrukcję.
Oto podstawowy przykład instrukcji if
:
package main
import "fmt"
func main() {
x := 27
if x%2 == 0 {
fmt.Println(x, "is even")
}
}
W programie Visual Studio Code, jeśli składnia języka Go zawiera nawiasy w warunkach, nawiasy zostaną automatycznie usunięte podczas zapisywania programu.
Złożone instrukcje if
Język Go obsługuje instrukcje złożone if
. Instrukcje można zagnieżdżać przy użyciu instrukcji else if
. Oto przykład:
package main
import "fmt"
func givemeanumber() int {
return -1
}
func main() {
if num := givemeanumber(); num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has only one digit")
} else {
fmt.Println(num, "has multiple digits")
}
}
W tym kodzie zwróć uwagę, że num
zmienna przechowuje wartość zwracaną z givemeanumber()
funkcji, a zmienna jest dostępna we wszystkich if
gałęziach. Jeśli jednak spróbujesz wydrukować wartość num
zmiennej poza blokiem if
, zostanie wyświetlony błąd:
package main
import "fmt"
func somenumber() int {
return -7
}
func main() {
if num := somenumber(); num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
fmt.Println(num)
}
Po uruchomieniu programu dane wyjściowe błędu wyglądają następująco:
# command-line-arguments
./main.go:17:14: undefined: num
W języku Go deklarowanie zmiennych w if
blokach jest idiomatyczne. Jest to sposób efektywnego programowania przy użyciu konwencji, która jest powszechna w języku Go.