Логическое ИЛИ в Go
Логическое ИЛИ требует выполнения хотя
бы одного условия. В Go его записывают знаком
||. В следующем примере условие
выполнится, если переменная num1 больше
0 или переменная num2 больше
0:
num1 := 10
num2 := -5
if num1 > 0 || num2 > 0 {
fmt.Println("Y") // сработает это
} else {
fmt.Println("N")
}
Операция && имеет приоритет над ||.
В следующем примере условие сработает, если
переменная num от 0 до 5
или от 10 до 20:
num := 3
if num > 0 && num < 5 || num > 10 && num < 20 {
fmt.Println("Y") // сработает это
} else {
fmt.Println("N")
}
Часто удобнее показать приоритет круглыми скобками вокруг групп сравнений:
num := 3
if (num > 0 && num < 5) || (num > 10 && num < 20) {
fmt.Println("Y") // сработает это
} else {
fmt.Println("N")
}
Ветка выполнится, когда истинна левая часть, правая или обе сразу.
Связку ИЛИ часто ставят, когда подходит несколько разных случаев: один код ошибки или другой, один порог или другой. Ложны должны быть обе части, чтобы вся проверка дала «нет».
Пропустим пользователя при админской роли или при особом флаге:
role := "guest"
vip := true
if role == "admin" || vip {
fmt.Println("inside")
} else {
fmt.Println("outside")
}
Когда обе части ложны, срабатывает вторая ветка:
role := "guest"
vip := false
if role == "admin" || vip {
fmt.Println("inside")
} else {
fmt.Println("outside")
}
Дано число:
day := 6
Если day равно 6 или 7, выведите
"rest", иначе "job".
Даны переменные:
a := 0
b := 5
Выведите "hit", если a равно 0
или b больше 3, иначе "miss".
Сравните 1 с 2 и 3 с 3
в одной связке ИЛИ. Выведите "any" или "none".
Не запуская код, определите, что выведется:
num1 := -10
num2 := -10
if num1 >= 0 || num2 >= 0 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num1 := 0
num2 := 0
if num1 >= 0 || num2 >= 0 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num1 := 0
num2 := 5
if num1 >= 0 || num2 >= 0 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num1 := 5
num2 := 5
if num1 >= 0 || num2 >= 0 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num1 := -5
num2 := 15
if num1 >= 0 || num2 >= 0 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num := 1
if num == 0 || num == 1 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num := 2
if num == 0 || num == 1 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
Не запуская код, определите, что выведется:
num := 2
if num == 0 || num == 1 || num == 2 {
fmt.Println("Y")
} else {
fmt.Println("N")
}
В приведенном ниже коде укажите приоритет операций в явном виде:
num := 3
if num > 5 && num < 10 || num == 20 {
fmt.Println("Y")
} else {
fmt.Println("N")
}