GoのDockerで自動的にimport packageが入るからくり

More than 3 years have passed since last update.

Goの公式Dockerで自動的に使用しているパッケージが入ったのでなんで?って思ってずーっと調べてた。

どんな大掛かりなからくりなんだろうと思って調べていたが、結局対象のGoアプリディレクトリで

$ go get -v -d

を使うと使用するパッケージが自動で入るようだった。

フラグつけるだけだったとは・・・。

もうちょっと深く調べた所、

-vはgo getのフラグには無く、go buildのフラグでした。


-v

print the names of packages as they are compiled.


(go buildのフラグはgo getでも使える)


go get [-d] [-f] [-fix] [-t] [-u] [build flags] [packages]


go buildで指定すると使用している外部パッケージが表示された。

buildの場合、パッケージのダウンロードはされなかった。

でも、「go getの時に使うと自動で必要パッケージダウンロードするよ〜」みたいなことは書いてないな〜

ちなみに-dはダウンロードだけでインストールはしないというフラグ。

今まで一つ一つ使用するパッケージを$ go get package_nameとしていたのでこれからはこれ使おうと思います。

2015/07/18追記

package mainが書かれているファイルがある階層で

$ go get

を実行するだけでいいようです。

-vオプションはログを表示するオプションでした。

また、package mainが書かれているファイルがカレントに無い場合、

(カレントより深い階層にpackage mainが書かれているファイルがある場合)

$ go get ./...

を実行するとすべてのパッケージが入ります。

ログを表示する場合は$ go get -v ./...かな。