Checking for true
x == true
упрощается до x
(как в Python или Bash).
Shortcircuits
В контексте сокращенных (shortcircuit) вычислений если ответ определяется значением левого операнда, правый не вычисляется. Это делает безопасными такие выражения:
s != "" && s[0] == 'x'
Иначе проверка s[0]
приводила бы к сбою программы при применении к пустой строке.
Order of operations
&&
— булево умножение, а ||
— булево сложение, что делает первый оператор приоритетнее. В итоге, например, для таких выражений скобки не нужны:
if 'a' <= c && c <= 'z' ||
'A' <= c && c <= 'Z' ||
'0' <= c && c <= '9' {
// foo
}
Bool and int conversion
Для преобразования bool
→ int
нужно юзать явную конструкцию if:
i := 0
if b {
i = 1
}
А для частых преобразований можно написать функцию:
func btoi(b bool) int {
if b {
return 1
}
return 0
}
Обратная операция не нуждается в отдельной функции из-за своей простоты, но пусть будет для симметрии:
func itob(i int) bool { return i != 0 }
Соус: Книга Язык программирования Go → Глава 3. Фундаментальные типы данных → 3.4. Булевы значения