##Go Modulesとは
Goの依存関係管理ツールです。一昔前まではdepが多く使われていましたが、Go1.11から導入され、多く使われているそうです。
ちなみに、Go1.13から本格的に導入で、Go1.11~1.12は移行期ということなので該当している場合は、バージョンアップします。また、下記のコマンドで環境変数の確認をし、GO111MODULEをonにすることでも使えるようになるようです。
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
.
.
. //下に続く
##Go Modulesの使い方
実際にプロジェクトを作るところから一連の流れに沿っていきます。まず、任意のディレクトリで任意のディレクトリで新規にプロジェクトを作成します。
また、Go Modulesを使う場合、GOPATH外でも置くことは出来ますが、保存先はGOPATH下になるそうです。→参考記事
※推奨は$GOPATH/src/github.com/username/任意プロジェクト
(自分の場合: $GOPATH/src/github.com/username/testproject)
mkdir $GOPATH/src/github.com/username/testproject
作成したプロジェクトに移動しgo mod init
を実行します。
go mod init github.com/username/testproject
testprojectと同じ階層にgo.mod
というファイルが生成されると思います。
module github.com/username/testproject
go 1.** //各々のバージョン
ここにパッケージなどのgo get
によるインストールが記させていきます。試しにGoのフレームワークである、Ginをインストールしてみます。
go get github.com/gin-gonic/gin
go.modファイルに追記があるはずです。適宜、他ファイルでインポートして使用します。また、新しくgo.sum
というファイルも生成されます。ここに依存関係が記録されていきます。
module github.com/username/testproject
go 1.** //各々のバージョン
require github.com/gin-gonic/gin v1.6.3
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
.
.
. //下に続く
##パッケージの削除
使用されていないパッケージは下記のコマンドで削除できます。また、そういった場合はエラーで教えてくれます。
go mod tidy github.com/gin-gonic/gin //例
##最後に
今回はGo Modulesについて最低限目ものして残しておきました〜。次はGoの基本型について何回かに分けて更新していこうと思います!ちょくちょく別の内容でもメモ残していくと思いますが!!