В драйвере mongodb для golang есть следующий фрагмент кода:
case reflect.Struct:
if z, ok := v.Interface().(Zeroer); ok {
return z.IsZero()
}
return false
Нулевой интерфейс определяется следующим образом:
type Zeroer interface {
IsZero() bool
}
Когда я реализую свою структуру с
func (id SomeStruct) IsZero() bool {
return id.ID == ""
}
это работает. Но когда я реализую метод IsZero с получателем указателя:
func (id *SomeStruct) IsZero() bool {
return id.ID == ""
}
утверждение типа не выполнено, и IsZero не выполняется.
Может кто-нибудь объяснить мне это?