Какой результат выведет консоль в примере №3

Фрагмент не компилируется: тип string пишется без кавычек, а строку нельзя сравнивать с nil. После i = s интерфейс i уже не равен nil.

Короткий ответ

Что ответить на собеседовании

Фрагмент не компилируется: тип string пишется без кавычек, а строку нельзя сравнивать с nil. После i = s интерфейс i уже не равен nil.

Подробный разбор

Ответ с пояснениями

Условие

Определите, что напечатает программа при её запуске, и объясните причину.

var s "string"
fmt.Println(s == nil)
var i interface{}
fmt.Println(i == nil)
i = s    
fmt.Println(i==nil)

Ответ

Фрагмент не компилируется: тип string пишется без кавычек, а строку нельзя сравнивать с nil. После i = s интерфейс i уже не равен nil.

Корректная последовательность может выглядеть так: var s string; fmt.Println(s == ""), затем var i interface{}; fmt.Println(i == nil), затем i = s; fmt.Println(i == nil).

Она выведет true, true, false. Нулевое значение строки — пустая строка, не nil. После присваивания s интерфейс содержит тип string и пустое значение; равенство nil требует отсутствия динамического типа и значения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее