0
2

More than 1 year has passed since last update.

Go Moduleって何

Last updated at Posted at 2022-10-04

はじめに

GoでDockerでGoサーバーを立てるとき、改めてGo Moduleって何となったので調べたことをまとめます。

Go Moduleとは

パッケージ(Package)をまとめたもの。パッケージはコードをまとめるもの。すべてのコードはパッケージに入っている。
モジュールがパッケージの依存関係を管理する。
例えばAパッケージの関数がBパッケージの関数を使用するとする。
つまり、AパッケージはBパッケージがないと動かない、AはBに依存しているということになる。

補足:goはmainパッケージのmain関数から処理が始まる。

go mod でGoモジュールを作成する

goプログラムが入っているフォルダ内で、以下のコマンドを実行することでモジュールが作成できる。
ユニークな名前は、公開する場合はgithubのリポジトリ名、
非公開の場合はローカルでユニークな名前を付ける。
ユニークな名前とは、世界(非公開の場合はローカルで)同じモジュール名がないようにすること。
モジュールを参照するとき、同じ名前のモジュールがあったらどっちのモジュールを参照すべきかわからなくなるため、ユニークな名前を付ける。

go mod init ユニークな名前

以下のようなgo.modファイルがGoのソースフォルダのルート直下に作成される。

go.mod
module ユニークな名前
 
go 1.18

フォルダ構成は以下の例が挙げられる。
ルート直下のgo.modがGoProgram内のmainパッケージ、testパッケージをまとめて管理しているイメージ。

GoProgram/
├sample/
│   ├main.go ※package main
│   └test/
│        └test.go ※package test 
└go.mod

参考記事

go modに記載してあること

requireやreplaceなど

参考記事

go.sumファイル

go getの後に作成される

参考記事

「go get」 「go mod tidy」 「go install」コマンドについて

go getで標準以外のリポジトリをインストールできる。
go mod tidyで外部に作成されたモジュールをダウンロードする。
標準以外を使用する場合はgo mod tidy必須かと。
詳しくは使用するときに調べる。

参考記事
go mod完全に理解した

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2