H5W3
当前位置:H5W3 > go > 正文

【go】关于golang 如何创建链式操作的问题

请教一下,python面向对象可以看通过 call 与 getattr 来动态的通过实例化 来进行链式操作,如 obj.a.b.c.d() ,所以我想问一下 golang如何实现这一功能.谢谢.

package main
import "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)
}

输出:

where
join
find

这个不是语言的问题,所谓的链式调用,实质上就是一个方法返回了一个对象,该对象还有其他方法而已可以继续调用而已,如楼上所示

以上都不是我想要的答案, 我拿python举例 通过__getattr__函数可以获取到 对象后边的属性 比如 obj.a.b.c.d 但其实这些属性并没有提前定义在obj中. 当比如执行 obj.a.b.c.d.e() 的时候 会去触发 call ,等于是一个动态的生成了一个链路,并且可以获取到这个链路,并执行call函数. 所以我想知道 golang有没有这种功能. 第一个答案依然是需要人工创建才行

回答

本文地址:H5W3 » 【go】关于golang 如何创建链式操作的问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址