Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Golang
/

Логический тип

Golang: Логический тип

В 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

Задание

Реализуйте функцию IsEven(), которая принимает целое число и возвращает true, если число чётное, и false — если нечётное. Нельзя использовать встроенные функции для определения чётности — только арифметику и операторы.

Примеры

IsEven(5) // false
IsEven(6) // true
IsEven(0) // true
IsEven(-4) // true
IsEven(-3) // false
Коммерческий опыт и Трудоустройство

Полезное

  • The Go Programming Language Specification - Boolean types

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Golang
/

Логический тип

Golang: Логический тип

В 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

Задание

Реализуйте функцию IsEven(), которая принимает целое число и возвращает true, если число чётное, и false — если нечётное. Нельзя использовать встроенные функции для определения чётности — только арифметику и операторы.

Примеры

IsEven(5) // false
IsEven(6) // true
IsEven(0) // true
IsEven(-4) // true
IsEven(-3) // false
Коммерческий опыт и Трудоустройство

Полезное

  • The Go Programming Language Specification - Boolean types

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

package solution

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestIsEven(t *testing.T) {
	a := assert.New(t)

	a.False(IsEven(5))
	a.True(IsEven(6))
	a.True(IsEven(0))
	a.True(IsEven(-2))
	a.False(IsEven(-3))
}
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →