🐥
[Go] Path の整理
事象
内部パッケージをimportする際、パスの指定が誤っていて、main.goファイルが実行できなかった。
解決の簡易メモ。
ディレクトリ構造
└── src
├── awesomeProject
│ ├── main.go
│ └── mylib
│ └── math.go
ファイル構造
package mylib
func Average(s []int) int {
total := 0
for _, i := range s {
total += i
}
return int(total/len(s))
}
package main
import (
"fmt"
"./awesomeProject/mylib"
)
func main () {
s := []int{1,2,3,4,5}
fmt.Println(mylib.Average(s))
}
調査
$ go run awesomeProject/main.go
awesomeProject/main.go:6:2: cannot find package "." in:
~/src/awesomeProject/awesomeProject/mylib
今の場所を確認
$ pwd
~/src
GO111MODULE=offに設定
$ go env -w GO111MODULE=off
package main
import (
"fmt"
"./mylib" // 変更
)
func main () {
s := []int{1,2,3,4,5}
fmt.Println(mylib.Average(s))
}
$ go run awesomeProject/main.go
3
解決
ファイル実行の場所を確認
GO111MODULE=off
して、そこから相対のパスを指定すると解決した。
参考
参考になりました。ありがとうございます。
Discussion