7base

🏷️ カテゴリ: プログラミング の記事一覧

❌ 絞り込みを解除する

1-1. Goのファイル構造と`package main`の意味

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 rungo buildで直接起動できるプログラムを作るためのパッケージです。
  • 今回の日記サイトがこれにあたります。

② それ以外の名前のパッケージ(ライブラリ)

  • 他のプログラムから呼び出して使うための部品集です。
  • fmtnet/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.goserver.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は「他のパッケージの力を借りる」ための宣言です。

🏷️ プログラミング
#Go言語