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

Баг: Короткое замыкание (short-circuit) работает не так, как ты думаешь

Go вычисляет && и || слева направо и останавливается, когда ответ уже ясен. Это полезно, но может привести к ошибкам, если справа есть вызов функции.

// ❌ ОШИБКА (логическая)
func dangerous() bool {
    fmt.Println("Я опасная функция, меня не вызывай просто так!")
    return true
}
a := false
b := dangerous()  // ❌ Вызовется всегда! А мы хотели только если a == true?
// ✅ ПРАВИЛЬНО (используем короткое замыкание)
c := false && dangerous()  // dangerous() НЕ вызовется, потому что false && ... = false
d := true || dangerous()   // dangerous() НЕ вызовется, потому что true || ... = true

Вывод: Если хочешь, чтобы функция вызывалась только при необходимости - ставь ее справа от && (если левый операнд true) или от || (если левый операнд false).

Загрузка...