![goコマンド『mod』](https://mitikusa-engineer.com/wp-content/uploads/2022/07/Go-1024x538.png)
Go言語に組み込まれているコマンド『mod』についてまとめました。
動作環境
ホストOS | Windows 10 21H1(19043.2130) 64bit |
WSL | 2 |
Visual Studio Code | 1.70.2 |
Docker Desktop | 4.12.0(85629) |
Go | 1.19.2 |
構文
# パッケージ・モジュールを管理するためのmodファイルを作成する
go mod init モジュール名
# modファイルから不要な参照を削除したり、必要な記述を追加したりする
go mod tidy
サンプル
modファイルを利用する一連の流れをまとめました。
GitHub上にリポジトリを用意する
まずは本命のプログラムを作成する前に、共通で利用するようなパッケージをGitHubに公開しておきます。
GitHubにリポジトリを作成します。手順はここでは割愛。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/11/image-1-1024x341.png)
リポジトリにモジュールをプッシュ
共通処理のプログラムを用意して、リポジトリにプッシュします。
ここではただHelloを表示するだけの関数(SayHello)を用意しました。
※main.goは確認用に用意しただけなのでプッシュはしません。
.
├── go.mod
├── hello
│ └── hello.go
│.gitignore
├── main.go
└── README.md
// go.mod
module github.com/mitikusaEngineer/GoSample
go 1.19
// hello/hello.go
package hello
import "fmt"
func SayHello(arg string) {
fmt.Printf("Hello, %v\n", arg)
}
# .gitignore
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
.devcontainer/
main.go
プッシュした結果は下記の通り。これがパッケージになります。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/11/image-2.png)
本命のプログラムを用意
任意の場所に下記コマンドでmodファイルを作成します。
go mod init [任意のモジュール名] # ここではsampleという名前にしました。
共通パッケージを利用する本命のプログラムを用意します。
ここで、使いたい共通パッケージのGitHub上のパスをimportに記述します。
その中のSayHello関数をmain関数で呼び出すようにします。
// main.go
package main
import (
"github.com/mitikusaEngineer/GoSample/hello"
)
func main() {
// GoSampleモジュールのhelloパッケージを利用
hello.SayHello("WORLD")
}
下記コマンドでmodファイルを更新します。
go mod tidy
# go.mod
module sample
go 1.19
require github.com/mitikusaEngineer/GoSample v0.0.0-20221102143054-668c68a3c0f5
最終的な構成は下記のようになります。
.
├── go.mod
├── go.sum
└── main.go
下記コマンドプログラムを実行して、共通パッケージが呼び出されていることが確認できました。
go run *.go
==========
Hello, WORLD