Goで自作したモジュールをimportできるようにする方法

Go言語

働いている会社で、複数のリポジトリから共通で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に関わる記事も書いているので、興味がありましたらそちらも読んでもらえたらと思います。

【おすすめ記事のリンク】

コメント

タイトルとURLをコピーしました