2019-12-27 (金)
Golangで色々書く日.
Golang,使ってない関数はコンパイル後に消されるのだけど,初期化が必要なパッケージを(間接的にでも)importしてしまうとinit関数からの参照ができてしまって初期化処理が削除されないのか...
パッケージをimportするとinitが呼ばれることになってるので当然の挙動なのだけど,例えばあるパッケージが net/http
に依存していて,そのパッケージ内の明らかにhttpと関係無い関数を呼んだ場合に,4MBくらい実行ファイルが大きくなる上に起動時にhttpの初期化処理が呼ばれてたりしてびっくりする.
travis-ci.org 使ってたけどtravis-ci.com の方も触ってみたり.