尝试创建界面,但方法有*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
创建一个接口,还是我需要备份并让接收器本身就是类型而不是指向类型的指针?
答案 0 :(得分:5)
如果为指针类型定义接口方法,则必须将指针传递给期望接口的方法/函数。
答案 1 :(得分:4)
我不明白你的问题是什么。是的,您编写它的方式*Char
符合界面DB
而Char
没有。你可以
Char
上运行(这也将自动适用于*Char
)*Char
类型DB
醇>