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

关于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有没有这种功能. 第一个答案依然是需要人工创建才行

以上是 关于golang 如何创建链式操作的问题 的全部内容, 来源链接: utcz.com/a/162767.html

回到顶部