コンパイル対象

  • 使われる(importされる)子だけコンパイルされる

ディレクトリ構成確認

$ tree
sample.com
├── config
│   └── config.yaml #外部ファイル
├── imports
│   └── import.go   #main.goでimportされる子
├── main.go
├── foo
│   └── foo.go      #使われない子
└── hoge.go         #使われない子
main.go
package main

import (
    "fmt"

    "sample.com/imports"
)

func main() {
    fmt.Print("main::main()\n")
    imports.Import()
}

バイナリファイルの中身を確認

# hoge.go/foo.goがいない
$ docker-compose exec golang strings compiled | grep "sample.com"
sample.com/imports.Import
sample.com/imports.init
/go/src/sample.com/main.go
/go/src/sample.com/imports/import.go
/go/src/sample.com/imports/import.go
/go/src/sample.com/main.go
sample.com/imports.statictmp_0
sample.com/imports.initdone
/go/src/sample.com
sample.com/imports.Import
sample.com/imports.init
sample.com/imports.statictmp_0
sample.com/imports.initdone
sample.com/imports.statictmp_0
sample.com/imports.initdone.
sample.com/imports.Import
sample.com/imports.init