Function 去链式函数调用?

Function 去链式函数调用?,function,go,Function,Go,不确定正确的名称是什么,但我正在查找有关Go中链接函数调用的更多信息。例如: foo.DoSomething.with this optional thing 所以我可以使用foo.DoSomething,但是可以添加。使用这个可选的东西,它可以做额外的事情。这可能吗?请给我指出正确的方向/提供一些示例。基本上,您让所有配置函数不断返回主对象,同时将对象链接在一起,并有一个最终的Go函数或任何您想要调用的函数,以使其执行操作 下面是一个关于 您只需要知道:当涉及到链接事物时,您的方法应该 接收指

不确定正确的名称是什么,但我正在查找有关Go中链接函数调用的更多信息。例如:

foo.DoSomething.with this optional thing


所以我可以使用foo.DoSomething,但是可以添加。使用这个可选的东西,它可以做额外的事情。这可能吗?请给我指出正确的方向/提供一些示例。

基本上,您让所有配置函数不断返回主对象,同时将对象链接在一起,并有一个最终的Go函数或任何您想要调用的函数,以使其执行操作

下面是一个关于


您只需要知道:当涉及到链接事物时,您的方法应该

接收指针和返回指针 或

接收值和返回值 或

接收值和返回指针
至少它们是我所知道的工作组合。我找不到这方面的任何文档。如果您知道发生了什么,请告诉我。

如果DoSomething返回的对象上带有WithThisOptionalThing方法,则与任何其他语言中的方法相同,这是可能的。但我真的不明白你在问什么。这让我想起了建筑商模式:
package main

import (
    "fmt"
)

func main() {
    DoSomething().Go()
    DoSomething().WithThisOptionalThing().Go()
}

type Chainable struct {
    thing bool
}

func DoSomething() *Chainable {
    return &Chainable{}
}
func (c *Chainable) WithThisOptionalThing() *Chainable {
    c.thing = true
    return c
}

func (c *Chainable) Go() error {
    // Actually do something now that it's been configured
    fmt.Println("Thing is", c.thing)
    return nil
}