Go mod コードをパッケージにわける
プロジェクトに名前をつける
自分のプロジェクトに名前をつける。なんでもよい。が、世の中で一意になる名前にすると都合が良い。よって、github.com/username/project_name のようにするのが最も無難。(※ username、project_name は実際のものに置き換えること。)
go mod init ...
コマンドライン上でイニシャライズする。
go mod init "github.com/username/project_name"
コードの分離(パッケージの分離)
main パッケージの main 関数が入っている main.go から書きはじめたとする。この main.go が長くなってきた+機能別にパッケージを分けたい、となった。分離したい機能を foo とする。
foo を分離する前の main.go はこのような内容。
package main
import "fmt"
func Foo() {
fmt.Println("Foo!")
}
func main() {
Foo()
}
main.go がある階層にサブディレクトリ foo を作り、その中に foo.go を置く。
ファイルの位置関係はこのようになる。
./
|- main.go
|- foo
|- foo.go
上記の foo/foo.go の内容はこう。
package foo
import "fmt"
func Foo() {
fmt.Println("Foo!")
}
foo.go は package foo とし、Foo という関数をエクスポートしている。
(※ 関数の先頭が大文字になっていることに注目。)
これを main.go 内で foo.Foo として使いたい。この場合、main.go 内の import ブロックの中に "github.com/username/project_name/foo" を含めれば良い。
package main
import (
"github.com/username/project_name/foo"
)
func main() {
foo.Foo()
}
こうしておいて、main.go のある階層で go build すればコンパイルされる。
go build
実例リポジトリ
実際にこの手順通りに作成したものをGitHubにて公開してあります。
SN
参考
続編的投稿
この記事が気に入ったらサポートをしてみませんか?