不知道什麼是正確的名稱,但我正在尋找更多關於「鏈接函數調用」的信息。例如:去鏈式函數調用?
foo.DoSomething().WithThisOptionalThing()
所以我可以使用foo.DoSomething()
但可能性增加.WithThisOptionalThing()
它做了額外的。這可能嗎?請指出正確的方向/提供一些例子。
不知道什麼是正確的名稱,但我正在尋找更多關於「鏈接函數調用」的信息。例如:去鏈式函數調用?
foo.DoSomething().WithThisOptionalThing()
所以我可以使用foo.DoSomething()
但可能性增加.WithThisOptionalThing()
它做了額外的。這可能嗎?請指出正確的方向/提供一些例子。
基本上,你可以讓所有的配置函數不斷的返回主要的「對象」,同時把你的東西鏈接在一起,並有一個最終的「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
}
你只需要知道一個例子:當涉及到鏈接的東西你的方法應該要麼始終
pointers
並返回pointers
或
values
,並返回values
或
values
,並返回pointers
至少他們知道我工作的組合。我找不到任何文件。如果你知道發生了什麼,請告訴我。
如果'DoSomething()'返回帶有'WithThisOptionalThing()'方法的對象,就可能與其他語言相同。雖然我不明白你在問什麼。 – Flimzy
讓我想起建造者模式:) –