概要
Goで別ファイルの変数や関数を読み込む実装をしようとした際に苦戦したため備忘録として投稿する。
今回はGOPATH
でなくGo Modules
を使用する
初期のファイル構成
ツリー
.
├── main.go
└── unify
├── const.go
└── func.go
ファイル
go_plactice
がモジュール名でunify
が読み込み先のフォルダ名である。
main関数
内で読み込んだ定数と関数を出力している。
main.go
package main
import (
"fmt"
"go_plactice/unify"
)
func main() {
fmt.Println(unify.Hoge);
fmt.Println(unify.Hello("関数"));
}
const.go
package unify
const Hoge = "定数"
func.go
package unify
func Hello(name string) string {
message := "Hello " + name
return message
}
モジュール作成
カレントディレクトリで以下のコマンドを叩きモジュールの初期化を行う。
モジュール名は任意である。
go mod init go_plactice
作成されるmod
モジュール名がgo_plactice
になっていることが確認できる。
go.mod
module go_plactice
go 1.18
ツリー構造
モジュールの初期化を行った後のツリー構造である。
.
├── go.mod
├── main.go
└── unify
├── const.go
└── func.go
tidy
必要であれば以下のコマンドを叩く。
今回は不要であるが、パッケージ等をインストールしたい場合などは使用する。
go mod tidy
ツリー構造
上記コマンドを叩くとgo.sum
が作成される
.
├── go.mod
├── go.sum
├── main.go
└── unify
├── const.go
└── func.go
確認
最後にmain.go
を実行すると、読み込んだ先のファイルの定数と関数が使用できていることが分かる。
% go run main.go
定数
Hello 関数
参考サイト
https://go.dev/doc/tutorial/create-module
https://go.dev/doc/tutorial/call-module-code