Go言語 - 複数ファイルのコンパイル
同packageの場合
他ファイル中の小文字で始まる関数や変数も参照可能。
同じフォルダに置きソースファイル名を指定しないでコンパイルする。実行ファイル名はフォルダ名になる。
\add\main.go \add.go
main.go
package main import ( "fmt" ) func main() { fmt.Println(add(1, 2)) //-> 3 fmt.Println(foo) //-> 10 }
add.go
package main var foo int = 10 func add(x, y int) int { return x + y }
他packageを使用する場合
他のソースファイルをimportして使用する。他ファイル中の大文字で始まる関数や変数のみ参照可。
importするpackage名とフォルダ名を同じにする。ファイル名はpackage名と異なっても良い。
main.goを指定してコンパイルする。
\main.go \calc\func1.go \calc\func2.go
main.go
package main import ( "fmt" "./calc" ) func main() { fmt.Println(calc.Add(1, 2)) //-> 3 // fmt.Println(calc.mul(1, 2)) //-> undefined: calc.mul fmt.Println(calc.Sub(10, 5)) //-> 5 fmt.Println(calc.Foo) //-> 10 // fmt.Println(calc.bar) //-> undefined: bar }
func1.go
package calc var Foo int = 10 var bar int = 20 func Add(x, y int) int { return x + y } func mul(x, y int) int { return x * y }
func2.go
package calc func Sub(x, y int) int { return x - y }