Условия теста с выражениями if/else
Самым базовым потоком управления в любом языке программирования является оператор if/else
. В языке Go использование операторов if/else
является очень простым. Однако, прежде чем вы будете готовы приступить к написанию программ на Go, необходимо понять некоторые различия.
Давайте взглянем на синтаксис Go для операторов if
.
Синтаксис для операторов if
В отличие от других языков программирования, в Go круглые скобки в условиях необязательны. Предложение else
не является обязательным. Тем не менее необходимость в использовании фигурных скобок все еще остается. Более того, Go не поддерживает тернарные операторыif
для сокращения строк, поэтому в каждом отдельном случае вам понадобится писать полный оператор if
.
Ниже приведен простой пример оператора if
:
package main
import "fmt"
func main() {
x := 27
if x%2 == 0 {
fmt.Println(x, "is even")
}
}
Если синтаксис Go содержит круглые скобки в условиях в Visual Studio Code, скобки будут автоматически удаляться при сохранении программы.
Составные операторы if
Go поддерживает составные операторы if
. Операторы можно вкладывать с помощью оператора else if
. Приведем пример:
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")
}
}
Обратите внимание, что в этом коде переменная num
сохраняет значение, возвращенное функцией givemeanumber()
, а переменная доступна во всех ветвях if
. Однако если вы попытаетесь распечатать значение переменной num
за пределами if
блока, вы получите ошибку:
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)
}
При выполнении программы выходные данные сообщения об ошибке будут выглядеть следующим образом:
# command-line-arguments
./main.go:17:14: undefined: num
Для языка Go характерно объявление переменных в блоках if
. Это эффективный способ программирования с использованием соглашения, который обычно применяется в Go.