Ответ
В Go nil (а не none) может не равняться nil в некоторых случаях из-за различий в типах. nil в Go — это нулевое значение для указателей, интерфейсов, слайсов, каналов, мап и функций.
Пример:
var a *int // nil pointer
var b interface{} = a // интерфейс с типом *int и значением nil
fmt.Println(b == nil) // false, т.к. интерфейс содержит тип *int
Здесь b != nil, потому что интерфейс хранит информацию о типе (*int), даже если его значение nil. Для корректной проверки можно использовать reflect.ValueOf(b).IsNil() или явно приводить к нужному типу.