Вложенные if в Go
Конструкции if else можно вкладывать
друг в друга произвольным образом. Смотрите
пример:
num := 3
if num >= 0 {
if num <= 5 {
fmt.Println("less than or equal to 5") // сработает это
} else {
fmt.Println("more than 5")
}
} else {
fmt.Println("less than zero")
}
Внутри ветки можно поставить еще одно условие. Внешняя проверка отсеивает один класс случаев, внутренняя уточняет детали только для прошедших первый отбор. Блоки снова оборачивают в фигурные скобки.
Отступы помогают читать уровни, но языку важны только скобки и порядок проверок. Каждый уровень работает так же, как отдельная конструкция на верхнем уровне.
Сначала проверим вход, затем возраст:
logged := true
age := 16
if logged {
if age >= 18 {
fmt.Println("full")
} else {
fmt.Println("limited")
}
} else {
fmt.Println("guest")
}
При другом внешнем ответе внутренняя проверка не выполняется:
logged := false
age := 20
if logged {
if age >= 18 {
fmt.Println("full")
} else {
fmt.Println("limited")
}
} else {
fmt.Println("guest")
}
Даны переменные:
paid := true
sum := 50
При оплате проверьте, больше ли sum 30,
и выведите "ship" или "hold", иначе
выведите "due".
Даны переменные:
lang := "ru"
word := "hi"
При lang равном "ru" сравните длину
word с 2 и выведите "pair"
или "other".
Даны переменные:
a := 2
b := 1
При a больше 0 проверьте b
и выведите "both" или "one".
Пусть в переменной age хранится число.
Если это число меньше 10 или больше
99, то выведите сообщение об этом.
Если же число попадает в указанный диапазон,
то найдите сумму цифр этого числа. Если
полученная сумма меньше или равна 9,
то выведите сообщение о том, что сумма цифр
однозначна, в противном случае выведите
сообщение о том, что сумма цифр двузначна.