Оператор ветвления if в языке Golang

GolangBeginner
Практиковаться сейчас

Введение

При создании плана дел, если задача еще не выполнена, она добавляется в список дел, а если выполнена, то перемещается в список выполненных задач.

В мире программирования мы также должны изменять направление выполнения программы в зависимости от различных требований. Теперь давайте узнаем о ветвительном операторе if, который является оператором управления потоком выполнения.

Основные понятия:

  • Оператор if
  • Оператор if-else
  • Оператор else-if
  • Правила форматирования

Оператор if

Самым распространенным оператором ветвления является оператор if, который проверяет, истинно ли предварительно заданное условие, и затем решает, выполнять ли блок кода. Вот его формат:

if condition {
    code block
}

Если условие истинно, программа выполняет блок кода; в противном случае блок кода пропускается.

Давайте рассмотрим практический пример. Создайте новый файл с именем if.go и напишите в него следующий код:

cd ~/project
touch if.go
package main

import (
    "fmt"
)

func main() {
    var num = 40
    // Get the remainder of dividing two numbers using %
    if num % 2 == 0 {
        fmt.Println(num, "is even")
    }
}

Запустите программу:

go run if.go

Результат будет следующим:

40 is even

В этой программе мы сначала объявляем целочисленную переменную num. Затем в операторе if мы используем оператор остатка от деления %, чтобы получить остаток от деления num на 2, и оператор равенства ==, чтобы проверить, равен ли остаток 0. Если это так, выполняется блок кода, и выводится сообщение, что число четное.

Оператор if else

Что делать, если мы хотим вывести что-то другое, когда условие в операторе if не выполняется? В этом случае можно использовать оператор if else. Если условие в операторе if истинно, выполняется блок кода в операторе if; в противном случае выполняется блок кода в операторе else.

Формат оператора if else похож на формат оператора if:

if condition {
    code
} else {
    code
}

Рассмотрим пример. Следующая программа выведет, является ли сегодня будним днем или выходным:

cd ~/project
touch if_else.go
package main

import (
    "fmt"
    "time"
)

func main() {
    // Get the current time
    t := time.Now()

    // Check whether it is Saturday or Sunday
    if t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
        fmt.Println("Today is:", t.Weekday(), "weekend")
    } else {
        fmt.Println("Today is:", t.Weekday(), "weekday")
    }
}

Запустите программу:

go run if_else.go

Результат будет следующим:

Today is: Monday weekday

Мы используем пакет time из стандартной библиотеки для получения текущего времени. Затем, сравнивая его с субботой и воскресеньем, если это выходной день, выполняется блок кода в операторе if; в противном случае выполняется блок кода в операторе else.

Оператор else if

В дополнение к проверке одного условия мы также можем использовать оператор else if для проверки нескольких условий.

Его формат следующий:

if condition {
    code
} else if condition {
    code
} else {
    code
}

В операторе ветвления может быть несколько операторов else if, но только один оператор if и один оператор else. Оператор else if должен находиться между операторами if и else.

Давайте перепишем программу из раздела "if else" для вывода дня недели:

Обновите файл if_else.go:

package main

import (
    "fmt"
    "time"
)

func main() {
    today := time.Now().Weekday()

    if today == time.Monday {
        fmt.Println("Today is Monday")
    } else if today == time.Tuesday {
        fmt.Println("Today is Tuesday")
    } else if today == time.Wednesday {
        fmt.Println("Today is Wednesday")
    } else if today == time.Thursday {
        fmt.Println("Today is Thursday")
    } else if today == time.Friday {
        fmt.Println("Today is Friday")
    } else if today == time.Saturday {
        fmt.Println("Today is Saturday")
    } else {
        fmt.Println("Today is Sunday")
    }
}

Запустите программу:

go run if_else.go

После запуска результат будет следующим:

Today is Monday

В предыдущей программе мы сначала использовали time.Now() для получения текущего времени, а затем получили день недели из текущего времени. В этой программе эти две строки кода объединены в одну. После получения дня недели он сравнивается с оператором ветвления для вывода дня недели.

Инициализирующее выражение в операторе if

В предыдущих уроках оператор if имел только один параметр — условие:

if condition {
    code
}

Полный набор параметров также включает инициализирующее выражение, которое является необязательным параметром в Go. Оно обычно используется для объявления и инициализации временных переменных, и при использовании инициализирующее выражение отделяется точкой с запятой. Синтаксис выглядит следующим образом:

if initialization statement; condition {
    code
}

Мы переписали программу из раздела "if else". Мы переместили объявление переменной в оператор if в качестве инициализирующего выражения, чтобы сократить код:

package main

import (
    "fmt"
    "time"
)

func main() {
    if t := time.Now(); t.Weekday() == time.Saturday || t.Weekday() == time.Sunday {
        fmt.Println("Today is:", t.Weekday(), "weekend, studying and recharging")
    } else {
        fmt.Println("Today is:", t.Weekday(), "also studying hard")
    }
}

Запустите программу:

go run if_else.go

Можно увидеть, что программа работает корректно:

Today is: Monday also studying hard

Примечание: Область видимости переменной, объявленной в инициализирующем выражении, ограничена только блоком if.

Проблемы с форматированием

Не знаю, заметили ли вы, любители Go, требования к форматированию в Go при изучении операторов if.

  • В Go ключевые слова if, else и else if должны находиться на одной строке с правой фигурной скобкой }.
  • Ключевые слова else if и else также должны находиться на одной строке с предыдущей левой фигурной скобкой, иначе компилятор выдаст синтаксическую ошибку во время компиляции.

Если мы запустим программу после перемещения оператора else на следующую строку, компилятор выдаст синтаксическую ошибку.

Резюме

В этом практическом занятии мы рассмотрели оператор ветвления if, в том числе следующие основные моменты:

  • В блоке кода оператора ветвления if может быть несколько операторов else if, но только один оператор if и один оператор else.
  • Оператор else if должен быть расположен между операторами if и else.
  • Вы можете использовать инициализирующее выражение в операторе if для сокращения кода.
  • Компилятор требует, чтобы ключевые слова if, else и else if находились на одной строке с фигурными скобками.