Go语言链式调用:模拟Python风格
本文探讨如何在go语言中实现类似python的链式调用,例如obj.a.b.c.d()。go语言不像python那样直接支持动态属性访问,但我们可以巧妙地利用方法链来达到相同的效果。关键在于每个方法都返回自身对象的指针。

以下代码演示了Go语言中链式调用的实现:
package main
import "fmt"
type cli struct{}
func newcli() *cli {
return &cli{}
}
func (c *cli) where() *cli {
fmt.Println("where")
return c
}
func (c *cli) join() *cli {
fmt.Println("join")
return c
}
func (c *cli) find() string {
fmt.Println("find")
return "find result"
}
func main() {
result := newcli().where().join().find()
fmt.Println(result)
}
这段代码定义了一个cli结构体和三个方法:where、join和find。每个方法都返回*cli指针,从而允许链式调用。newcli函数用于创建cli对象。在main函数中,newcli().where().join().find()实现了链式调用,依次执行了where、join和find方法,最终输出结果为:
where join find find result
通过这种方法,我们成功地在Go语言中模拟了Python风格的链式调用。 关键在于每个方法都返回自身对象的指针,这使得我们可以连续调用多个方法。
立即学习“Python免费学习笔记(深入)”;










