コンパイル時に特別な文字列情報を入れるには #golang
Go言語の話題です。
コンパイル時にフラグを与えることで、ソースコード上の特定の文字列情報を書き換えることができます。 これを応用すれば、例えば、バージョンやリビジョン番号などの特別な文字列情報を後で指定するといった使い方ができます。
以下、例を書いてみました(version.go):
package main import ( "fmt" ) var version string func main() { fmt.Println(version) }
versionの変数が定義されていますが、情報を持っていません。 ここで:
$ go build -ldflags "-X main.version 0.1" version.go
としてコンパイルして実行してみます。すると:
$ ./version 0.1
と出力されます!
ちなみに、 -ldflags
でGoのリンカに対して引数を与えます。
-ldflags
に渡せる引数は:
$ go tool 6l
とすると一覧が表示できます。(6lなのか8lなのか、環境で違います。go tool -n
を使ってコマンドを確かめましょう。)なお、ここにもヘルプが書かれています: ld - The Go Programming Language
他にも使い方が考えられますので、いろいろと試してみてください。
本日のgist: version.go
- 作者: David Chisnall,デイビッド・チズナール,柴田芳樹
- 出版社/メーカー: ピアソン桐原
- 発売日: 2012/10/04
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 5回
- この商品を含むブログを見る
- 作者: 古川昇
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- クリック: 7回
- この商品を含むブログ (2件) を見る
Programming in Go: Creating Applications for the 21st Century (Developer's Library)
- 作者: Mark Summerfield
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2012/05/01
- メディア: Kindle版
- この商品を含むブログを見る