Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Go Modules

Go Modulesは依存関係を管理する公式ツールです。プロジェクトのルートディレクトリに『go.mod』ファイルを作成し、外部パッケージのバージョンを管理します。『go mod init』でモジュールを初期化し、『go get』で依存パッケージを追加できます。

構文
// モジュールを初期化します(go.modを作成)。
// go mod init モジュール名

// 例:
// go mod init github.com/yourname/myapp

// 依存パッケージを追加します(go.modとgo.sumが更新されます)。
// go get github.com/gin-gonic/gin

// 特定バージョンを指定します。
// go get github.com/gin-gonic/gin@v1.9.0

// go.modに合わせて依存関係を整理します(不要なものを削除)。
// go mod tidy

// ベンダーディレクトリを作成します(オフライン対応)。
// go mod vendor

// go.mod の内容例です。
/*
module github.com/yourname/myapp

go 1.21

require (
    github.com/gin-gonic/gin v1.9.0
    golang.org/x/text v0.12.0
)
*/
コマンド一覧
コマンド概要
go mod init [module]新しいモジュールを初期化してgo.modを作成します。
go get [pkg]依存パッケージを追加・更新します。
go get [pkg]@[version]特定バージョンの依存パッケージを取得します。
go mod tidy不要な依存を削除しgo.modとgo.sumを整理します。
go mod vendor依存パッケージをvendor/ディレクトリにコピーします。
go mod download依存パッケージをキャッシュにダウンロードします。
go mod verifyダウンロード済みモジュールの整合性を確認します。
go mod graph依存関係グラフを表示します。
go list -m all全モジュールのバージョンを一覧表示します。
サンプルコード
// --- プロジェクト作成の流れ ---

// 1. ディレクトリを作成してモジュールを初期化します。
// mkdir myapp && cd myapp
// go mod init github.com/yourname/myapp

// 2. 作成される go.mod の例です。
/*
module github.com/yourname/myapp

go 1.21
*/

// 3. 外部パッケージを追加します。
// go get golang.org/x/text@latest

// 4. go.mod が更新されます。
/*
module github.com/yourname/myapp

go 1.21

require golang.org/x/text v0.14.0
*/

// 5. go.sum には各パッケージのハッシュが記録されます。
/*
golang.org/x/text v0.14.0 h1:ScX5w...
golang.org/x/text v0.14.0/go.mod h1:...
*/

// --- main.go でパッケージを使う例 ---

package main

import (
    "fmt"

    // 標準ライブラリのみ使う例(外部依存なし)です。
    "strings"
    "unicode"
)

func main() {
    // Go Modulesが管理するのは外部パッケージです。
    // 標準ライブラリはモジュール管理不要です。
    s := "Hello, Go Modules!"
    words := strings.Fields(s)
    fmt.Printf("単語数: %d\n", len(words))

    // unicodeパッケージで大文字チェックをします。
    for _, r := range s {
        if unicode.IsUpper(r) {
            fmt.Printf("  大文字: %c\n", r)
        }
    }
}
概要

Go Modulesは Go 1.11で導入され、Go 1.16以降はデフォルトで有効になっています。『go.mod』にはモジュール名・Goバージョン・依存パッケージが記述され、『go.sum』には各パッケージのハッシュ値が保存されます。この2ファイルはGitで管理します。

『go mod tidy』は開発中に定期的に実行することを推奨します。使わなくなったパッケージの参照を削除し、go.modとgo.sumを最新の状態に保ちます。

go.sumを削除したり手動で編集したりしないでください。整合性チェックに使われるため、破損するとgo buildやgo getが失敗します。

パッケージのインポート方法は『パッケージ / import』、ビルドコマンドは『go build / run / test』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。