不确定名称是什么,但我正在寻找有关"链接函数调用的更多信息"在Go。例如:
foo.DoSomething().WithThisOptionalThing()
所以我可以使用foo.DoSomething()
,但可以添加.WithThisOptionalThing()
来做额外的事情。这可能吗?请指出正确的方向/提供一些例子。
答案 0 :(得分:8)
基本上,当你将所有东西连在一起并拥有最终的“Go”功能或你想要调用它以使其执行动作时,你使所有的配置函数都不断返回主“对象”。
以下是play
的示例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
}
答案 1 :(得分:0)
你只需要知道:当涉及链接时,你的方法应该总是
pointers
并返回pointers
或
values
并返回values
或
values
并返回pointers
至少他们是我所知道的工作组合。我找不到任何关于此的文件。如果你知道发生了什么,请告诉我。