go runしても分割したファイルが認識されない
Go言語では、ひとつのパッケージのソースファイルを一度にまとめてコンパイルするので、特別な決め事や宣言をすることなく、とあるファイルから別ファイル内の定数、変数、型、関数を参照することができます。
とのことなので、試しに以下のようにmainパッケージを分割してコンパイルしたところ、上手くいきませんでした(´・_・`)
// main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("main file")
OutputDiv()
}
// div.go
package main
import (
"fmt"
)
func OutputDiv() {
fmt.Println("div file")
}
go runの結果、分割したファイルにある関数を見つけられないエラーになります。
go run main.go
# command-line-arguments
./main.go:9: undefined: OutputDiv
どうやら、go runした場合は引数のファイルのみがコンパイル対象になるため、
go run *.goか、必要なファイルを全てオプションとして渡す必要があるようです。
go run main.go div.go
main file
div file