PHP 開発では、メソッド パラメーターを関数に渡すことが一般的な要件です。パラメータを関数に渡すことで、関数内でパラメータを操作および処理できるため、より柔軟で再利用可能なコードが実現します。この記事では、PHP エディターの Baicao がメソッド パラメーターを関数に正しく渡す方法を紹介し、開発者がこの重要なプログラミング概念をより深く理解し、適用できるようにするための実践的なヒントと注意事項を共有します。初心者でも経験豊富な開発者でも、この記事は貴重な参考資料とガイダンスを提供します。
これがgoで可能なのか知りたいです。複数のメソッドを備えたタイプがあります。メソッドのパラメーターを受け取り、その型に対してそれを呼び出す関数を作成することは可能ですか?
これが私が望むものの小さな例です:
リーリーgo は、渡されたメソッド名で置き換えるのではなく、型 foo
に foo()
という名前のメソッドがあると想定します。
はい、可能です。選択肢は 2 つあります:
expressionfoo.a
は、a
と同等の関数を生成しますが、最初の引数として明示的なレシーバーを持ち、シグネチャ func(f foo )
を持ちます。
このメソッドの受信者は明示的です。メソッド名 (およびその型) を bar()
に渡すだけで、それを呼び出すときに、実際のレシーバー m(f)
を渡す必要があります。
期待どおりの出力 (go playground で試した):
リーリーf が
foo 型の値の場合、式
f.a は
func() 型の関数値を生成します。暗黙的に受信側の値は
f です。
リーリー
bar() に渡される関数値とともに保存されるため、明示的に指定しなくても呼び出すことができます:
m( ) 。
go playground で試してください)。
(完全を期すため:string 値として渡し、
reflect# を使用できます。 ## この名前でメソッドを呼び出すパッケージ。次のようになります:
リーリー
遊び場に行って
以上がメソッドのパラメータを関数に渡すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。