Введение
При создании плана дел, если задача еще не выполнена, она добавляется в список дел, а если выполнена, то перемещается в список выполненных задач.
В мире программирования мы также должны изменять направление выполнения программы в зависимости от различных требований. Теперь давайте узнаем о ветвительном операторе 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находились на одной строке с фигурными скобками.



