ホームページ >バックエンド開発 >Golang >`-ldflags -X` を使用して、メイン以外の Go パッケージにパッケージ変数を設定できますか?

`-ldflags -X` を使用して、メイン以外の Go パッケージにパッケージ変数を設定できますか?

DDD
DDDオリジナル
2024-12-22 22:00:17575ブラウズ

Can I Set Package Variables in Non-Main Go Packages Using `-ldflags -X`?

Golang Build で -ldflags -X を使用したパッケージ変数の設定

go build コマンドを使用して Go アプリケーションをビルドする場合、開発者はパッケージ変数を設定できます-ldflags -X オプションを使用します。この手法は、バージョン文字列、構成値、またはその他のメタデータをコンパイル済みバイナリに挿入するためによく使用されます。

ただし、メイン パッケージではなく特定のパッケージ内でパッケージ変数を設定できるかどうかという疑問が生じます。これを実現する方法は次のとおりです:

-X フラグのドキュメントには次のように明示されています:

-X importpath.name=value
Set the value of the string variable in importpath named name to value.

これは、-X フラグがメインのパッケージだけでなく、任意のパッケージで使用できることを示しています。パッケージ。パッケージ変数を指定するには、完全なインポート パスを指定するだけです (コードでパッケージをインポートする方法と同様)。

たとえば、構成パッケージが $GOPATH/src/my/package にある場合/config で、次のコマンドを使用してそのパッケージ内の Version 変数を設定できます:

go build -ldflags "-X my/package/config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC)

これにより、ビルド コマンドが実行された場合でも、config パッケージ内の Version 変数が設定されます。メインパッケージ内。

以上が`-ldflags -X` を使用して、メイン以外の Go パッケージにパッケージ変数を設定できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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