我需要使用几乎相同的字段和方法创建多个具有相同操作的结构。我想,与其这样做,不如创建一个结构并使用接口来限制交互。效果很好!现在的问题。我希望这些方法是可链接的。为此,方法需要返回对结构的引用。这样做之后,所有退货都抱怨(struct) does not implement <interface> (wrong type for <method> method)
. 这是预期的。
问题是,是否可以使用具有多个具有可链接方法的接口的单个结构?还是为每个接口创建单独的、重复的结构是唯一的方法?
我想过使用组合,但我仍然需要定义将调用嵌入式结构方法的方法,在这种情况下,创建新的纯结构没有区别。
示例问题:
https://play.golang.org/p/JrsHATdi2dr
package main
import (
"fmt"
)
type A interface {
SetA(string) A
Done()
}
type B interface {
SetB(string) B
Done()
}
type t struct {
a string
b string
}
func (t *t) SetA(a string) *t { t.a = a; return t }
func (t *t) SetB(b string) *t { t.b = b; return t }
func (t *t) Done() { fmt.Println(t.a, t.b) }
func NewTA() A {
return &t{}
}
func NewTB() B {
return &t{}
}
func main() {
fmt.Println("Hello, playground")
ta := NewTA()
ta.SetA("a")
ta.Done()
tb := NewTB()
tb.SetB("b")
tb.Done()
}