试图创建一个接口,但方法有*Type,而不是Type接收器
APOLOGIZE:困了,误读错误信息.以为我在创建数据库界面时遇到了阻碍,实际上我误用了它.对不起...将来会更加小心!
type Char string
func (*Char) toType(v *string) interface{} {
if v == nil {
return (*Char)(nil)
}
var s string = *v
ch := Char(s[0])
return &ch
}
func (v *Char) toRaw() *string {
if v == nil {
return (*string)(nil)
}
s := *((*string)(v))
return &s
}
从这里我想要一个包含方法toType和的接口toRaw
type DB interface{
toRaw() *string
toType(*string) interface{}
}
由于函数接收器是指针,因此不起作用.我这样说是因为当我尝试使用它时,我得到了error.k
Char does not implement DB (toRaw method requires pointer receiver)
有没有办法从toType和创建一个接口toRaw,或者我需要备份并让接收器本身是类型而不是指向类型的指针?
如果为指针类型定义接口方法,则必须将指针传递给期望接口的方法/函数.
我不明白你的问题是什么。是的,您编写的方式*Char符合界面,DB但Char不符合界面。你可以
Char直接对非指针类型进行操作(这也将自动工作*Char)*Char仅当您需要与类型兼容的东西时才使用DB