パッケージ間でエクスポートされた型にアクセスする
Go では、エクスポートされた型は他のパッケージからアクセスできます。これにより、コード設計における再利用とモジュール化が可能になります。しかし、特定のパッケージからすべての定義済みエクスポート型にアクセスするにはどうすればよいでしょうか?
次の例を考えてみましょう:
package demo type People struct { Name string Age uint } type UserInfo struct { Address string Hobby []string NickNage string }
別のパッケージ内で、
import "demo"としましょう。
この他のパッケージから、デモ パッケージ内で定義されているエクスポートされたタイプをすべて取得しようとします。これを実現するには、 go/importer パッケージを利用します。
package main import ( "fmt" "golang.org/x/tools/go/importer" ) func main() { pkg, err := importer.Default().Import("demo") if err != nil { fmt.Println("error:", err) return } for _, declName := range pkg.Scope().Names() { fmt.Println(declName) } }
このコードは、インポーターを使用してデモ パッケージをインポートし、そのスコープ内で定義された名前を反復処理します。結果の出力には、エクスポートされたすべてのタイプがリストされます。この場合:
People UserInfo
ただし、このアプローチを使用すると、Go プレイグラウンドでエラーが発生する可能性があることに注意してください。
以上が特定の Go パッケージからエクスポートされたすべての型にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。