パッケージ #
プログラムのエントリーポイントとなる main 関数を定義する #
Go 言語では main
パッケージの main
関数がプログラムのエントリーポイントとなり go run
実行時に起動される。
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
> go run main.go
Hello World
パッケージを作る #
Go 言語のパッケージはファイルシステム上のディレクトリと対応しており、 同じディレクトリにある go ファイルは同じパッケージとして扱われる。
例えば mypkg
パッケージを作る場合は、ディレクトリ mypkg
を作り、そこにパッケージを実装する go ファイルを置いていく。
mypkg/file1.go
で定義した変数や定数、は mypkg/file2.go
からも利用できる。
// mypkg/file1.go
package mypkg
const MyString = "hello world"
// mypkg/file2.go
package mypkg
func HelloWorld() string {
return MyString
}
パッケージを外部に公開する #
パッケージの各ファイルのトップレベルで定義された変数や定数、関数や構造体は外部に公開することができる。
パッケージ外部への公開・非公開を決めるのは各要素の名前である。 名前が大文字から始まっていたら「公開」小文字から始まっていたら「非公開」となる。
// mypkg/file.go
package mypkg
// 非公開
var string1 = "string1"
// 公開
func Func1() string {
return string1
}
package main
import (
"fmt"
"mypkg"
)
func main() {
// 非公開変数を呼び出しているのでコンパイルエラーになる
fmt.Println(mypkg.string1)
// 公開関数を呼び出しているので正常に実行できる
fmt.Println(mypkg.Func1())
}