モジュール・パッケージ - Go

最終更新日: 2026-07-25

TOP(About this memo)) > 一覧(Go) > モジュール・パッケージ

エクスポート

In Go, a function whose name starts with a capital letter can be called by a function not in the same package.

モジュール、パッケージ

Go code is grouped into packages, and packages are grouped into modules

Goでの名前空間

パッケージ、mainの仕様

import

gopls

モジュール

モジュール名はURL

VSCodeのimportクリック時の動作

アプリコードのモジュール名どうする -> アプリコードでもURLにしたほうが良さそう。

importでの自己参照時にエイリアスが使えないか?

ローカルのモジュールを利用する

$GO_PATH、モジュール対応モード

go env

$GO_PATH

モジュール対応モード

$GOPATH/bin

$GOPATH/pkg/mod

$GOPATH/pkg/gosum

$GOPATH/src

$GOCACHE

Go 1.13 から廃止

module-aware mode

Go Modules

$GO111MODULE

go.mod

(TODO) toolchain行

toolchain go1.21.4

go.sum

共通オプション -mod

-mod=readonly (デフォルト), -mod=vendor

vendorディレクトリ

-mod=mod

ひとつのgo.modファイル下で複数のmain

go mod init 〜

go mod graph

go mod tidy

go mod download

go mod edit -replace

go run

go build

go install

go get

依存するモジュールのアップデートをする

go list

% pwd
プロジェクトフォルダ/model
% go list       
github.com/〜/model
% go list -m
github.com/〜

モジュールの最新バージョンを確認する

go clean

The -modcache flag causes clean to remove the entire module download cache, including unpacked source code of versioned dependencies

マルチモジュール

マルチモジュールについて

goplsがプロジェクトのトップに go.mod ファイルがないと上手く動作しない。

"gopls": {
        "build.experimentalWorkspaceModule": true
}

参照モジュールの置き換え

(IME)マルチモジュールのリポジトリについて

(IME) リポジトリを分けたけど、戻した話

その他

外部パッケージ

不明点

func f(w http.ResponseWriter, r *http.Request) {
	server.Bind(r, &struct{}{})
	emptycheck.EmptyCheck(&struct{}{})
}
emptycheck "github.com/megur0/empty-check" // エラーになる
"github.com/megur0/simple-server/server" // こっちは成功する
"github.com/megur0/empty-check/emptycheck"
"github.com/megur0/simple-server/server"

internalパッケージ

(IME) プライベートリポジトリを外部モジュールとして利用したい。

Dockerfile内でプライベートリポジトリにアクセスする。