タイトルで説明しきれなかったので追加説明すると
main.goと同じディレクトリ階層においてある関数の呼び出しが
go run main.go
では呼べないのである
例えば、GoでAPIを作るときにmain.goにroute書くのは気持ち悪いのでroutes.goに切り出しておきたい
↓みたいなディレクトリ構造があったとする。
//ディレクトリ構造
appName/
│
├ main.go
└ routes.go
コードには↓みたいに書く
main.go
//省略
func main() {
RegistersRoutes() //ちなみに関数名の最初の文字は大文字じゃないと呼べない
}
routes.go
//省略
func RegistersRoutes(){
fmt.Println("ここでGetとか書いていきたい")
}
これで
go run main.go
とかやると
#command-line-arguments ./main.go: undefined: RegistersRoutes) //とか言われる
解決策
go build # ファイル名を指定しない
# or
go run main.go routes.go # 両方共ファイル名を書く
ここでずっと躓いて、routes/routes.rb
とかやってた。