Зарегистрируйтесь, чтобы продолжить обучение

Логический тип Основы Go

В Go логический тип (bool) используется для представления двух значений: true (истина) и false (ложь).

Логические операторы

Логические операторы в Go позволяют комбинировать или изменять булевы значения (true и false). Они часто используются в условиях (if, for) и при построении сложных выражений.

Go поддерживает классические логические операции:

  • && — логическое «и» (возвращает true, если оба операнда истинны)
  • || — логическое «или» (возвращает true, если хотя бы один операнд истинен)
  • ! — логическое «не» (инвертирует значение: !true становится false)
  • == — сравнение на равенство
  • != — сравнение на неравенство

Примеры:

// false
true && false

// true
false || true

// true
!false

// true
true == true

// true
false != true

Объявление переменных

Переменные логического типа объявляются явно с использованием bool или через вывод типа:

var isActive bool = true
var isAdmin bool = false

// или с выводом типа
isActive := true
isadmin := false

Переменные логического типа по умолчанию получают значение false:

var flag bool
fmt.Println(flag)
// => false

Строгая типизация

Go — строго типизированный язык. Это значит, что логические значения нельзя смешивать с другими типами. Например, нельзя сравнивать bool со строкой или числом:

// ошибка компиляции: mismatched types
true == "hello"

// тоже ошибка
true == 1

Чтобы проверить, что число не равно нулю, сравнение выполняют явно:

count := 5

// true
isPositive := count > 0

// false
isZero := count == 0

Для строк проверка также выполняется явно:

text := "Hexlet"

// false
isEmpty := text == ""

// true
isNotEmpty := text != ""

Булевы значения можно сравнивать только с булевыми:

isActive := true
fmt.Println(isActive == true)
// =>true

fmt.Println(isActive != false)
// =>true

Сравнение строк

Go позволяет сравнивать строки с помощью стандартных операторов:

  • == — равно
  • != — не равно
  • <, >, <=, >= — лексикографическое сравнение (по порядку символов и длине)

Сравнение выполняется побайтно, в соответствии с кодировкой UTF-8.

"hexlet" == "hexlet"
// true

"go" < "golang"
// true

"beta" > "alpha"
// true

"foo" != "bar"
// true

Использование в функциях

Сравнения полезны даже без использования условных конструкций. Таким образом часто пишут функции-предикаты, то есть функции, которые выполняют проверки и возвращают булево значение.

func isEmpty(text string) bool {
    return text == ""
}

func isEqual(a, b int) bool {
    return a == b
}

func bothTrue(a, b bool) bool {
    return a && b
}

Примеры вызовов:

isEmpty("")
// true
isEmpty("Hexlet")
// false

isEqual(4, 4)
// true
isEqual(4, 7)
// false

bothTrue(true, false)
// false
bothTrue(true, true)
// true

Дополнительные материалы

  1. The Go Programming Language Specification - Boolean types

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff