Go1.11ではModulesという機構が追加され、go mod コマンドでmodulesを管理することができる。
もうGoPath直下にディレクトリを切らず、どこでも好きなところに置けます。
Modulesの使い方は様々な記事で紹介されていますが、
1.export GO111MODULE=on
2.go mod init
これだけです。
あとは、go buildでコンパイルすればプログラム内のimportに記載されているパッケージが自動的にインストールされて、go.modとgo.sumに追記されます。
ちなみにバージョン等を指定したい場合は下記の場所を書き直せばいいぽい
go.mod
require (
//ここ?
github.com/XXXXX
)
んで、フォルダを切って新しいパッケージを宣言した場合、相対パスでimportできなかった
|-main.go //package xxx
|-sub
|-sub.go //package sub
sub.go
//パッケージ名
package sub
import (
...
このような場合、go.modにはmoduleにメインのパッケージ「XXX」と書き、そこからの相対パスをimportに使用する。
go.mod
//mainのパッケージ名
module XXX
require (
github.com/XXXXX
)
main.go
package xxx
import (
"xxx/sub"
)
当たり前のことだが、カスタムパッケージ?ってググってもあまりGo1.11で出てこなかったので覚書程度に記載しておきます。