Условия теста с выражениями 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.