packageとmain
プログラムの起点は決まっている
前のレッスンで書いた雛形を、1行ずつ分解します。
Go
package main
import "fmt"
func main() {
fmt.Println("fleama-go を起動します")
}package main
Go のファイルは必ず package で始まります。どのまとまりに属するかの宣言です。
この中で main だけが特別です。package main と書かれたまとまりだけが、実行できるプログラムになります。それ以外の名前を付けると、他から使われる部品(ライブラリ)という扱いになり、単体では起動しません。
プレーンテキスト
package main 実行できる
package shop 部品。単体では動かないfunc main()
main パッケージの中の main という名前の関数が、プログラムの入り口です。起動すると、Go はまずここを探して、上から順に実行します。
名前は決め打ちです。start や run にしても入り口にはなりません。
import
import は、他のまとまりの機能を借りる宣言です。fmt は Go に最初から付いてくる標準ライブラリの1つで、文字の入出力を担当します。
ここで Go らしいのが、借りたのに使わないとエラーになることです。
プレーンテキスト
./main.go:3:8: "fmt" imported and not used他の言語なら警告で済むところを、Go は止めます。使わない import が積もると読む人が混乱するから、というのが理由です。厳しいようですが、おかげで Go のコードには「なぜあるのか分からない行」がほとんどありません。
まとめると
プレーンテキスト
package main ここは実行できるプログラムです
import "fmt" 文字を扱う機能を借ります
func main() ここから始めてくださいこの3つが揃って、はじめて動くプログラムになります。
要件
"package"を渡したら実行できるプログラムであることの宣言ですを返す"import"を渡したら他のまとまりの機能を借りる宣言ですを返す"main"を渡したらプログラムの入り口になる関数ですを返す- そのどれでもないときは
分かりませんを返す
入出力例
explainPart("package") → "実行できるプログラムであることの宣言です"
explainPart("import") → "他のまとまりの機能を借りる宣言です"
explainPart("main") → "プログラムの入り口になる関数です"
explainPart("func") → "分かりません"ヒント
編集 ゆめさく編集部