Go ではパッケージを動的に反復することがどのように不可能であるか
最近の Go プログラミングに関する問い合わせで、ユーザーは動的にトラバースしたいという要望を表明しました。パッケージとそのメソッド。 Python ではそのような機能が可能ですが、Go ではこの機能が提供されていません。
この設計上の決定は、コード内で明示的に参照される関数と変数のみを含む Go のコンパイル プロセスに基づいています。したがって、一部のシンボルが最終的な実行可能ファイルに含まれていない可能性があるため、パッケージ内のシンボルの完全なセットを反復処理することは現実的ではありません。
代替アプローチ: カスタム タイプの配列
Go ではパッケージの直接反復は利用できませんが、代わりのアプローチとして、目的の型のインスタンスを含む配列を作成することが含まれます。この配列を反復して、関連するメソッドにアクセスできます。
たとえば、提供された計算例では、カスタム配列を構築できます。
var methods = [...]Calc{ &calculator.Add{}, &calculator.Sub{}, &calculator.Mul{}, &calculator.Div{}, }
その後、メソッドを反復できます。 :
for _, method := range methods { method.First(x) method.Second(x) }
このメソッドにより、繰り返しオブジェクトを割り当てる必要がなくなり、より簡潔で保守しやすいソリューションが提供されます。
以上がGo でパッケージを動的に反復できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。