【发布时间】:2018-10-14 07:02:58
【问题描述】:
在golang的mongodb驱动中有如下代码:
case reflect.Struct:
if z, ok := v.Interface().(Zeroer); ok {
return z.IsZero()
}
return false
接口 Zeroer 定义如下:
type Zeroer interface {
IsZero() bool
}
当我用
实现我的结构时func (id SomeStruct) IsZero() bool {
return id.ID == ""
}
它有效。但是当我使用指针接收器实现 IsZero 方法时:
func (id *SomeStruct) IsZero() bool {
return id.ID == ""
}
类型断言失败,IsZero 没有被执行。
谁能给我解释一下?
【问题讨论】:
-
你没有显示失败的代码,但这意味着你没有传入一个指针,这是该接收器所需的类型。