关于golang 如何创建链式操作的问题
请教一下,python面向对象可以看通过 call 与 getattr 来动态的通过实例化 来进行链式操作,如 obj.a.b.c.d() ,所以我想问一下 golang如何实现这一功能.谢谢.
回答:
package mainimport "fmt"
type cli struct {
}
func NewCli() *cli {
return &cli{}
}
func (ths *cli) Where() *cli {
fmt.Println("where")
return ths
}
func (ths *cli) Join() *cli {
fmt.Println("join")
return ths
}
func (ths *cli) Find() string {
//fmt.Println("Find")
return "find"
}
func main() {
findData := NewCli().Where().Join().Find()
fmt.Print(findData)
}
输出:
wherejoin
find
回答:
这个不是语言的问题,所谓的链式调用,实质上就是一个方法返回了一个对象,该对象还有其他方法而已可以继续调用而已,如楼上所示
回答:
以上都不是我想要的答案, 我拿python举例 通过__getattr__函数可以获取到 对象后边的属性 比如 obj.a.b.c.d 但其实这些属性并没有提前定义在obj中. 当比如执行 obj.a.b.c.d.e() 的时候 会去触发 call ,等于是一个动态的生成了一个链路,并且可以获取到这个链路,并执行call函数. 所以我想知道 golang有没有这种功能. 第一个答案依然是需要人工创建才行
以上是 关于golang 如何创建链式操作的问题 的全部内容, 来源链接: utcz.com/a/162767.html