🐥

[Go] Path の整理

2022/10/22に公開

事象

内部パッケージを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
して、そこから相対のパスを指定すると解決した。

参考

https://qiita.com/takuyanin/items/ca6e82050f106e427d3b

参考になりました。ありがとうございます。

Discussion