ホームページ  >  記事  >  バックエンド開発  >  golang は functools.partial または同様のメソッドを使用して、他の関数のラップを完了します

golang は functools.partial または同様のメソッドを使用して、他の関数のラップを完了します

王林
王林転載
2024-02-06 10:15:07936ブラウズ

golang 使用 functools.partial 或类似的方法来完成包装其他函数

質問内容

(golang初心者)

基礎となる API と対話する 2 つの関数があり、これら 2 つの関数を再試行でラップしたいとします。ただし、2 つの関数の入力パラメーターは異なります。

Python では、functools.partial を使用して部分 func オブジェクトを作成し、それを

に渡します。 リーリー

上記の簡単な例を使用して、golang で同様のことを行うにはどうすればよいでしょうか? functools.partial パッケージ関数を見ましたが、その関数では部分関数を作成するときにすべての引数を渡すことができないようです。

この再試行パターンを実現する完全に異なるパターンは golang にありますか?


正解


functools.partialを正しく理解していれば、関数をカリー化できるようになります。

Go では、関数をカリー化するためにクロージャを使用できます:

リーリー

go はファーストクラス関数をサポートしているため、関数を変数として渡すことができます。この例では、(a) 任意の int-->int 関数と (b) int を受け入れ、次の結果を返す関数 do を作成します。この関数は int に適用されます:

リーリー

また、do には int-->int のみが必要なので、たとえば neg も次のように使用できます。 リーリー

参照:

https://www.php.cn/link/7a43ed4e82d06a1e6b2e88518fb8c2b0

以上がgolang は functools.partial または同様のメソッドを使用して、他の関数のラップを完了しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。