morito

個人的に勉強したことのメモを投稿していく技術ブログ。最近はWebアプリ開発と量子コンピュータの勉強をしてます。

go run main.goしても分割したファイルの関数が読まれない

Go言語初心者です

# go run main.go 
# command-line-arguments
./main.go:5:2: undefined: tweet

main.go のmain関数から
同じpackageのtweet.goに記述した
tweet関数を呼び出そうとしたらエラーが出ました

main.goもtweet.goも同じpackageなので呼び出せるはずなのですが
よくわからなかったので調べました。

ディレクトリ構成はこんな感じ↓

.
├── Dockerfile
├── README.md
├── docker-compose.yml
├── go.mod
├── go.sum
├── keys
│   ├── go.mod
│   └── keys.go
├── main.go
└── tweet.go

原因

go runはカレントディレクトリ以下の全ファイルを読んでくれるわけではないため

必要なファイルを全てオプションで渡す必要がある

go run *.go or go run main.go tweet.go

もしくは

# go build -o app