Условие с логическим значением в Go
Пусть у нас есть логическая переменная, которая
может принимать значения true или
false:
test := true
Давайте напишем if, проверяющий нашу
переменную на значение true. Круглых
скобок вокруг проверки нет:
test := true
if test == true {
fmt.Println("Y") // сработает это
} else {
fmt.Println("N")
}
Само сравнение уже дает true или
false. Поэтому конструкцию if
можно не писать, если нужен только ответ:
fmt.Println(1 == 1) // выведет true
fmt.Println(1 == 2) // выведет false
Готовое логическое значение само может стоять в условии. Отдельный знак сравнения не нужен:
Так удобно, когда ответ уже посчитан раньше или пришел из другой части программы. Ветка для «да» и ветка для «нет» работают так же, как при сравнении чисел.
Проверим флаг готовности:
ready := true
if ready {
fmt.Println("go on")
} else {
fmt.Println("hold")
}
Можно поставить литерал напрямую:
if false {
fmt.Println("yes")
} else {
fmt.Println("no")
}
Дана переменная:
open := true
При истинном значении выведите "enter",
иначе "stay".
Дана переменная:
locked := false
Выведите "free", если замок не активен,
иначе "busy".
Поставьте true в условие без сравнения
и выведите "on" или "off".
Проверьте то, что переменная test
равна true.
Проверьте то, что переменная test
равна false.
Условие можно перевернуть знаком !.
Он стоит перед проверкой и меняет ответ
на противоположный:
num := 3
if !(num > 0 && num < 5) {
fmt.Println("Y")
} else {
fmt.Println("N") // сработает это
}
Дан следующий код:
num1 := 1
num2 := 2
if num1 >= 0 || num2 <= 10 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Используя оператор !, инвертируйте
приведенное условие.
Пусть даны следующие переменные:
a := 2 * (3 - 1)
b := 6 - 2
Используя оператор ==, узнайте, равны
ли значения этих переменных или нет.