ホームページ >バックエンド開発 >Golang >特定の Go パッケージからエクスポートされたすべての型にアクセスするにはどうすればよいですか?

特定の Go パッケージからエクスポートされたすべての型にアクセスするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-13 11:18:15487ブラウズ

How Can I Access All Exported Types from a Specific Go Package?

パッケージ間でエクスポートされた型にアクセスする

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

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