働いている会社で、複数のリポジトリから共通でimportされるライブラリのようなリポジトリ作る機会があったので、今回は自作したモジュールをimportできるようにする方法を紹介していきたいと思います。
モジュールを自作する方法
まずは、go.modを作成。
名前はgitリポジトリ名と同じにする。
go mod init github.com/SND1231/module
以下のようなgo.modファイルが作成される。
module github.com/SND1231/module
go 1.19
モジュールのファイルを作成。今回は簡単に「OUTPUT TEST」と出力されるものを作成した。
package module
import "fmt"
func PrintlTest() {
fmt.Println("OUTPUT TEST")
}
これらの内容でgit pushした後にバージョンを設定するためにgitのタグを作成する必要がある。
バージョンはSemantic Versioningを推奨している。
Semantic Versioning 2.0.0
Semantic Versioning spec and website
今回は初めて作ったのでv1.0.0でタグを作成する。ソースを修正してバージョンを上げる場合は、v1.1.0やv2.0.0とバージョニングしてタグを作成する。
実際に作成したgitリポジトリは以下になります。
GitHub - SND1231/module at v1.0.0
Goのモジュールテスト用. Contribute to SND1231/module development by creating an account on GitHub.
自作したモジュールを使ってみよう
自作したモジュールを実際にgo getしてみましょう。
# testでgo.modを作成
go mod init test
go get github.com/SND1231/module
以下のようにgo.modとgo.sumが作成される
go getしたモジュールのバージョンがv1.0.0になっている。
go.mod
module test
go 1.19
require github.com/SND1231/module v1.0.0 // indirect
go.sum
github.com/SND1231/module v1.0.0 h1:gUtKpcgKI3Saw97LNTzKBtpdOIP+2rq6rdVYH65WbRY=
github.com/SND1231/module v1.0.0/go.mod h1:78gnPu5j+ep1wMmoBSXvwxu6vIMxRgJGrytgsiWVeTw=
main.goに自作したモジュールの関数を呼び出してみる。
package main
import "github.com/SND1231/module"
func main() {
module.PrintlTest()
}
go runしてみて、「OUTPUT TEST」が実行されていることを確認。
% go run main.go
OUTPUT TEST
まとめ
今回は自作したGoモジュールをimportできるようにする方法を紹介してきました。
他にもGoに関わる記事も書いているので、興味がありましたらそちらも読んでもらえたらと思います。
【おすすめ記事のリンク】
コメント