Что выведет: var p *int; var i interface{} = p; fmt.Println(p == nil, i == nil)?

Middle
148 просмотров
AFK Offer AI

Выведет true, false. p == nil потому что это nil pointer. Но i != nil потому что интерфейс содержит type (*int) — это не nil interface. Это продолжение темы nil interface != nil. Ловушка: функция возвращает интерфейс, внутри typed nil pointer — caller проверяет != nil и получает true. Всегда возвращай nil без типа.

Следующий вопрос

Как спроектировать migration system для БД на Go?