【Go】自分で作ったパッケージを読み込むためにはsrcディレクトリが必須?
すごく基礎的なことで詰まったのでメモ
自分で作ったパッケージを読み込む為の手順
まずはgo.modを準備
$ go mod init hogehoge.com/test // => とりあえず任意の名前でOK。デプロイ時はちゃんとしたURLにしないと駄目かも
go.mod
module hogehoge.com/test go 1.13
## プロジェクトフォルダの直下にsrcディレクトリを設置
ここでハマった。
→ これ必要ありませんでした m(T T)m
srcディレクトリが無いと読み込みができないとは知らず、普通にテキトーな構成にしていた。
なので、handlerやrepositoryなどのディレクトリをすべてsrcフォルダ内に移動。
使用したいファイルからインポート
とりあえずmain.goからhandlerを呼び出す。
main.go
package main import "hogehoge.com/test/handler" func main() { // これで呼び出せる handler.TestHandler() }
importに記載するURIがgo.modのモジュール名と違っているとインポートできないので注意。
追記
モジュールのインポートエラーになったら、go.modの一行目とimoport文のパスが間違っていないかチェック。
これはOK
go.mod
module hogehoge.com/test
main.go
package main import "hogehoge.com/test/domain"
これはエラーになる
go.mod
module hogehoge.com/test
go.main
package main import "hogehoge/test/domain" => .comが抜けているからエラーになる