首页 > 文章列表 > Go语言如何实现类似Python的链式调用?

Go语言如何实现类似Python的链式调用?

300 2025-03-16

Go语言链式调用:模拟Python风格

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

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结构体和三个方法:wherejoinfind。每个方法都返回*cli指针,从而允许链式调用。newcli函数用于创建cli对象。在main函数中,newcli().where().join().find()实现了链式调用,依次执行了wherejoinfind方法,最终输出结果为:

where
join
find
find result

通过这种方法,我们成功地在Go语言中模拟了Python风格的链式调用。 关键在于每个方法都返回自身对象的指针,这使得我们可以连续调用多个方法。

来源:1740843686