Closed9

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

ksaitoksaito

目的

Go1.18から学習開始した人でもわかるように以下について調べる

  • get/installの違いについて
  • mod tidyって何?
  • mod downloadって何?

古い記事でgo getしていて混乱するから、脳内変換できるようなレベルまで理解したい

ksaitoksaito

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

ksaitoksaito

どのコマンドもgo.modと関係あるから、まずはここら辺から理解する必要がありそう

go.modにはgo mod init <module name>した時のmodule nameとgo versionとrequireでURLが書かれている

そもそも、このURL群はなんなのか?

ksaitoksaito

モジュールとは

  • Golang ver 1.11から追加された機能
  • モジュールはパッケージの集まりのこと
  • 1つのモジュールに複数パッケージが含まれている

JSのpackage.jsonみたいなパッケージ管理ツールみたいなものか・・

ksaitoksaito

go getとは

go1.16以前までは、go.modとライブラリのインストールの機能があった。

しかし上の機能がgo1.16からgo installgo getに別れ、go installが ライブラリのインストールをし、go getgo.modを編集するだけの機能となった。

go modを編集するだけならgo mod tidyがあるため、go1.18や1.19が主流となっている今ではgo getを使う必要がないという認識となる。

ksaitoksaito

go installとは

標準ライブラリ以外のgoライブラリ(バイナリ)を$(go env GOPATH)/binにインストールするコマンド。

$(go env GOPATH)/binにPATHを通すことでどこでもライブラリを使うことができる。

.zshrc
export GOPATH=$(go env GOPATH)
export PATH=$PATH:$GOPATH/bin
ksaitoksaito

結論

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