go言語で別フォルダーの関数を呼ぶ時、依存関係でハマったので纏めます
今回はtestフォルダーのtest.goを呼ぶ簡単な構成で説明します
ファイル構成
gotest
∟test
∟test.go
∟main.go
main.goのsrcの中身
package main
import (
"fmt"
"gotest/test"
)
func main() {
fmt.Println("test")
test.GetTest()
}
test.goのsrcの中身
package test
import (
"fmt"
)
func GetTest() {
fmt.Println("test2")
}
modの初期化やpackageの取得
// modの初期化
$ go mod init gotest
// フォルダー移動
$ cd test
// modの初期化
$ go mod init gotest/test
// 上階層に移動
$ cd ..
// testフォルダーのpackageをローカルの相対パスに変更
$ go mod edit -replace=gotest/test=./test
// packageを取得
$ go get gotest/test
// main.goを実行
$ go run main.go
実行され下記のように出力される
test
test2
go言語を勉強しはじめた時にハマりやすいポイントなので参考にして頂ければと思います