anomalocaristan’s blog

JSやGo、設計などについて学んだことをメモしておくサイトです

【Go】自分で作ったパッケージを読み込むためにはsrcディレクトリが必須?

すごく基礎的なことで詰まったのでメモ

自分で作ったパッケージを読み込む為の手順

まずはgo.modを準備

$ go mod init hogehoge.com/test
// => とりあえず任意の名前でOK。デプロイ時はちゃんとしたURLにしないと駄目かも


go.mod

module hogehoge.com/test

go 1.13

## プロジェクトフォルダの直下にsrcディレクトリを設置 ここでハマった。
srcディレクトリが無いと読み込みができないとは知らず、普通にテキトーな構成にしていた。 なので、handlerやrepositoryなどのディレクトリをすべてsrcフォルダ内に移動。
→ これ必要ありませんでした m(T T)m

使用したいファイルからインポート

とりあえず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が抜けているからエラーになる