質問:
Go の初心者として、あなたは次の計算機を構築しています。現在は加算と減算をサポートしています。乗算や除算などの将来の機能を想定しています。しかし、addition.go ファイルとsubtraction.go ファイルの現在のアプローチは冗長であることがわかり、より動的なソリューションを求めています。電卓パッケージ内のすべてのメソッドを見つけて動的に反復処理する方法はありますか?
回答:
残念ながら、Go には組み込みメカニズムが提供されていません。パッケージの内容をイントロスペクトし、そのメソッドを動的に反復処理します。コンパイラには、明示的に参照される実行可能ファイル内の関数と変数のみが含まれます。不完全な可能性のあるシンボルのセットを反復処理することは、Go では有用とは見なされません。
代替解決策:
動的反復の代わりに、配列を使用して保持することができます。操作したい型のオブジェクトを選択し、その配列を反復処理します。このアプローチには、インターフェイスのスライスの作成が含まれます:
type Calc interface { First(x int) int Second(x int) int } var operations []Calc
その後、具象型のオブジェクトをスライスに追加できます:
operations = append(operations, &calculator.Add{}) operations = append(operations, &calculator.Sub{})
その後、スライスを反復処理して呼び出します。メソッドを動的に:
for _, operation := range operations { fmt.Println(operation.First(x)) fmt.Println(operation.Second(x)) }
このアプローチは、動的なイントロスペクションを必要とせずに、パッケージ内の電卓操作を反復する柔軟な方法を提供します。
以上がGo パッケージ内のメソッドを動的に繰り返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。