🔴 Сложный · 3 очк. Основы синтаксиса
Скомпилируется ли: const x = 1 << 100; fmt.Println(x)?
A Да, выведет большое число
B Да, выведет 0 (переполнение)
C Нет, ошибка при объявлении const
D Нет, ошибка при вызове Println
Объяснение вопроса

Код не скомпилируется. Нетипизированная константа const x = 1 << 100 допустима - константы в Go имеют произвольную точность. Но при передаче в fmt.Println(x) компилятор пытается привести x к типу по умолчанию для аргумента (например int). Значение 2^100 не помещается в int64 - возникает ошибка overflow.

const x = 1 << 100  // OK
// fmt.Println(x)   // ошибка: overflow

// Можно использовать в контексте, где помещается:
var bigInt = big.NewInt(0)
bigInt.SetString("1267650600228229401496703205376", 10)  // 2^100
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.