📂
Go v1.16に追加されたgo installの機能を試してみる
Go v1.16がリリースされましたね!
追加された機能がいろいろありますが、今回はembedを試してみます!
新しいgo installの機能
-
go install
コマンドはもともと存在します - Go v1.16から新しくバージョン指定ができるようになった
- むしろ、バージョン指定をしないといけなくなった
- go.modの書き換えが起きなくなった
要約すると
- Go Module追加編集のためのには
go get
を使う - ツールなどのバイナリインストールのためには
go install
を使う
リリースノートはこちらです
従来の仕組みでツールをインストール場合は
-
go get golang.org/x/tools/cmd/stringer
でインストールすると、go.modにパッケージが追加される - コード内でstringerを参照してる部分がなければ、
go mod tidy
をするとgo.modから消える
新しい仕組みでツールをインストールする場合は
-
go install golang.org/x/tools/cmd/stringer@latest
だけでOK - go.modの書き換えは起きない
試してみた
従来のやり方でやってみる
$ go get github.com/99designs/gqlgen
- 最新バージョンv0.13.0 が追加された
- インストールされた場所は、$GOPATH/pkg/mod/github.com/99designs/gqlgen@v0.13.0
-
gqlgen
コマンドが使えるようなります - go.modに追記された
- go mod tidyすると、go.modから消える
新しいやり方をバージョンなしでやってみる
$ go install github.com/99designs/gqlgen
- バージョン指定をしていないのでエラーになります
新しいやり方を@latest指定でやってみる
$ go install github.com/99designs/gqlgen@latest
- 最新バージョンv0.13.0 が追加された
- インストールされた場所は、$GOPATH/pkg/mod/github.com/99designs/gqlgen@v0.13.0
-
gqlgen
コマンドが使えるようなります - go.modに追記されない
-
gqlgen
コマンドが使えるようなります
古いバージョンをインストールするのどうなるの?
まずは最新バージョンをインストールしておく
$ go install github.com/99designs/gqlgen@latest
$ gqlgen version
v0.13.0
次の古いバージョンをインストールしてみる
$ go install github.com/99designs/gqlgen@v0.12.2
$ gqlgen version
v0.12.2
どこのディレクトリでgqlgenを実行してもv0.12.2が使われるようになった
また新しいバージョンをインストールしてみる
$ go install github.com/99designs/gqlgen@latest
$ gqlgen version
v0.13.0
どこのディレクトリでgqlgenを実行してもv0.13.0が使われるようになった
最後にインストールしたのバージョンが使われるようになりました
まとめ
- Go Module追加編集のためのには
go get
を使う - ツールなどのバイナリインストールのためには
go install
を使う
参考
Discussion