ホームページ  >  記事  >  バックエンド開発  >  Go パッケージ内のメソッドを動的に繰り返すにはどうすればよいですか?

Go パッケージ内のメソッドを動的に繰り返すにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-16 16:51:03486ブラウズ

How can I dynamically iterate through methods in a Go package?

Go でのパッケージの動的反復

質問:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。