2026/04/06
Goのプログラムは、必ずファイルの先頭にpackageという宣言から始まります。
main.goの一番最初の行を見てみましょう。
package main
たったこれだけですが、ここにはGoの重要な考え方が詰まっています。 この記事では「なぜこう書くのか」を丁寧に解説します。
packageとは何かGoのコードは必ず**パッケージ(package)**というグループに属しています。
パッケージとは、関連するコードをまとめた単位のことです。 大きな会社に「営業部」「開発部」「総務部」があるように、 Goのコードも役割ごとにパッケージに分けて管理します。
package main // ← このファイルは「main」パッケージに属していますよ、という宣言
パッケージ名はファイルの先頭に必ず一行で書きます。 これをパッケージ宣言と呼びます。
mainという名前なのかGoでは、package mainは特別な意味を持ちます。
Goのパッケージには大きく2種類あります。
① package main(実行可能なプログラム)
go runやgo buildで直接起動できるプログラムを作るためのパッケージです。② それ以外の名前のパッケージ(ライブラリ)
fmtやnet/httpなどがこれにあたります。つまり、**「このファイルがプログラムの出発点ですよ」**という印がpackage mainです。
package mainと書いたファイルには、必ずmain()という関数が必要です。
プログラムを起動すると、Goは真っ先にこのmain()関数を探して実行します。
package main // ← 「実行可能なプログラムです」という宣言
// ...中略...
func main() { // ← プログラムはここから始まる
// サーバーの起動処理など
}
mainという名前は「主要な」「最初の」という意味の英語です。
Goの世界では「プログラムの入口」として、この名前が予約されています。
main.goについてファイル名のmain.goと、ファイル内のpackage mainは別物です。
main.go ← ファイルの名前(.goはGoのファイルを表す拡張子)package main ← ファイルの中身がどのパッケージに属するかの宣言実はGoでは、ファイル名は何でも構いません。
app.goやserver.goという名前でも、中にpackage mainと書いてあれば同じ意味になります。
ただし慣習として、プログラムの入口となるファイルはmain.goと命名することが多いです。
.goという拡張子ファイル名の末尾についている.goはファイルの種類を示す拡張子です。
.go → Goのソースコード.py → Pythonのソースコード.js → JavaScriptのソースコードGoのコンパイラはこのことによりGoであると識別し、Goとして処理します。
package ― このファイルがどのグループ(パッケージ)に属するかを宣言するキーワードmain ― 「実行可能なプログラムの入口」を意味するGoの特別なパッケージ名package main ― 「このファイルはプログラムの出発点です」という宣言.go ― Goのソースコードファイルであることを示す拡張子func main() ― プログラム起動時に最初に呼ばれる関数。package mainとセットで必要次の記事(1-2)では、package mainの直後に続くimportブロックを読んでいきます。
importは「他のパッケージの力を借りる」ための宣言です。