Go言語では、ひとつのパッケージのソースファイルを一度にまとめてコンパイルするので、特別な決め事や宣言をすることなく、とあるファイルから別ファイル内の定数、変数、型、関数を参照することができます。

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
このエントリーをはてなブックマークに追加