正確な名前はわかりませんが、私はGoで "連鎖関数呼び出し"の詳細を探しています。たとえば:連鎖関数呼び出しを実行しますか?
foo.DoSomething().WithThisOptionalThing()
は、だから私は、何か余分なのをし.WithThisOptionalThing()
を追加するためにfoo.DoSomething()
を使用しますが、可能性を持つことができます。これは可能ですか?正しい方向に向ける/いくつかの例を挙げてください。
正確な名前はわかりませんが、私はGoで "連鎖関数呼び出し"の詳細を探しています。たとえば:連鎖関数呼び出しを実行しますか?
foo.DoSomething().WithThisOptionalThing()
は、だから私は、何か余分なのをし.WithThisOptionalThing()
を追加するためにfoo.DoSomething()
を使用しますが、可能性を持つことができます。これは可能ですか?正しい方向に向ける/いくつかの例を挙げてください。
基本的には、すべての構成機能がメインの「オブジェクト」を返すようにしています。同時に、「実行」機能や、アクションを実行するために呼び出したいものは何でも構いません。ここで
はあなただけ知っている必要があり playpackage 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
はビルダーのパターンを思い出させる:) –