Go get/install/mod tidyの違いについて

目的
Go1.18から学習開始した人でもわかるように以下について調べる
- get/installの違いについて
- mod tidyって何?
- mod downloadって何?
古い記事でgo getしていて混乱するから、脳内変換できるようなレベルまで理解したい

現時点でのgo get/install
の理解は、パッケージ入れるときに入力するくらいの理解度でimport文に追加したら、go mod tidy
でgo.mod更新すればいいのかという感じです。

どのコマンドもgo.mod
と関係あるから、まずはここら辺から理解する必要がありそう
go.mod
にはgo mod init <module name>
した時のmodule name
とgo versionとrequireでURLが書かれている
そもそも、このURL群はなんなのか?

go.mod
のrequire urlは、モジュールを呼んでいるみたい
では、モジュールとは・・

モジュールとは
- Golang ver 1.11から追加された機能
- モジュールはパッケージの集まりのこと
- 1つのモジュールに複数パッケージが含まれている
JSのpackage.jsonみたいなパッケージ管理ツールみたいなものか・・

調べる途中で良さげな記事を発見
GOPATHモードとモジュール対応モードについても知っておかないといけないのか・・

go getとは
go1.16以前までは、go.mod
とライブラリのインストールの機能があった。
しかし上の機能がgo1.16からgo install
とgo get
に別れ、go install
が ライブラリのインストールをし、go get
はgo.mod
を編集するだけの機能となった。
go mod
を編集するだけならgo mod tidy
があるため、go1.18や1.19が主流となっている今ではgo get
を使う必要がないという認識となる。

go installとは
標準ライブラリ以外のgoライブラリ(バイナリ)を$(go env GOPATH)/bin
にインストールするコマンド。
$(go env GOPATH)/bin
にPATHを通すことでどこでもライブラリを使うことができる。
export GOPATH=$(go env GOPATH)
export PATH=$PATH:$GOPATH/bin

結論
- go1.18や1.19でモジュール対応モードを使用している限り、
go get
を使うことはない -
go install
は、グローバルにライブラリをインストールするときに使う -
go mod tidy
は、プロジェクト内でライブラリをインストールするときに使う(go.modによしなに追加や削除してくれる)