1 回答
TA贡献1827条经验 获得超9个赞
是的,flush 就可以有签名;
flush() interface{}, error
你如何实施?像这样具有合理方法体的东西应该为你做;
type MyDbDriver struct {
//fields
}
func (d *MyDbDriver) query(request string) error {
return nil
}
func (d *MyDbDriver) flush() interface{}, error {
return nil, nil
}
在 Go 中,所有接口实现都是隐式的,这意味着,如果您的类型具有与接口签名匹配的方法,那么您已经实现了它。不需要像public class MyType: IMyInterface, IThisIsntCSharp. 请注意,在上面的示例中*MyDbDriver已经实现了您的接口,但MyDbDriver还没有。
编辑:下面是一些伪调用代码;
e := driver.query("select * from thatTable where ThatProperty = 'ThatValue'")
if e != nil {
return nil, e
}
i, err := driver.flush()
if err != nil {
return nil, err
}
MyConcreteInstance := i.(MyConcreteType)
// note that this will panic if the type of i is not MyConcreteType
// that can be avoided with the familiar object, err calling syntax
MyConcreteIntance, ok := i.(MyConcreteType)
if !ok {
// the type of i was not MyConcreteType :\
}
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报