ホームページ >バックエンド開発 >Golang >すべての構造体をリストせずにカスタム構造体を使用してジェネリック関数を定義するにはどうすればよいですか?

すべての構造体をリストせずにカスタム構造体を使用してジェネリック関数を定義するにはどうすればよいですか?

PHPz
PHPz転載
2024-02-09 20:30:10821ブラウズ

すべての構造体をリストせずにカスタム構造体を使用してジェネリック関数を定義するにはどうすればよいですか?

PHP では、すべての構造をリストすることなく、カスタム構造を使用して共通の関数を定義したい場合、それを行う効率的な方法があります。このアプローチは、可変数のパラメーターを使用することで実現されます。関数定義でパラメータ名として省略記号 (...) を使用することで、任意の数のパラメータを受け入れることができます。関数本体内で、 func_get_args() 関数を使用して、関数に渡されるすべての引数を取得できます。このようにして、事前にすべての構造を定義しなくても、関数内でこれらのパラメーターを使用できます。この柔軟なアプローチは、より一般的で再利用可能な関数を作成し、コーディング効率を向上させるのに役立ちます。

質問の内容

2 つの異なる構造があるとします。

リーリー

onetwo をオプションとして明示的にリストせずに、両方を受け入れる関数を定義することは可能ですか?

たとえば、次のようなものを探しています:

リーリー

functest[m one | two](m m) は使いたくありません。10 個以上の構造体がある可能性があり、毎回その関数に戻る必要がないからです。コードベースに新しい構造を追加します。

解決策

ジェネリクスはメソッドを使用して型パラメーターの動作を制限するため、コードを次のように書き直す必要があります。 リーリー

そうすると、使用サイトは次のようになります:

リーリー

以上がすべての構造体をリストせずにカスタム構造体を使用してジェネリック関数を定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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