パッケージ

パッケージ #

プログラムのエントリーポイントとなる 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())
}