1. package について聞いたとき
  2. import について聞いたとき
  3. main について聞いたとき
  4. 知らない名前のとき
コース一覧
Go入門
packageとmain

Go入門

変数とゼロ値、Go唯一のループであるfor、複数戻り値とエラー処理、スライスとマップ、構造体とメソッド、ゴルーチンによる並行処理、net/httpによるAPI開発まで、Goの基礎を、毎レッスン実際にコードを書き、フリマアプリのAPIをGoで作りながら学びます。

1
Hello, Go
01. Goとは15分
02. 実行してみる15分
03. packageとmain15分
04. fmtで出力する15分
05. go buildと1バイナリ15分
06. つくる: 起動バナー20分
07. 第1章クイズ10分
2
変数と型
01. varで宣言する15分
02. := の短縮宣言15分
03. ゼロ値(Goならでは)15分
04. 基本の型15分
05. 暗黙変換なし15分
06. 定数とiota15分
07. つくる: 商品データ表示20分
08. 第2章クイズ10分
3
制御構文(forしかない世界)
01. Goのif15分
02. forしかない世界15分
03. forの七変化15分
04. Goのswitch15分
05. 定番: FizzBuzz15分
06. ループで集計15分
07. つくる: 商品集計20分
08. 第3章クイズ10分
4
関数とエラー処理
01. funcで関数を作る15分
02. 複数戻り値(Goならでは)15分
03. if err != nil(Goの心臓)15分
04. エラーを作る15分
05. deferで後始末15分
06. つくる: 検証つき関数群20分
07. 第4章クイズ10分
5
スライスとマップ
01. 配列15分
02. スライス15分
03. appendで育てる15分
04. rangeで走査する15分
05. マップ15分
06. カンマokイディオム15分
07. つくる: 検索と集計20分
08. 第5章クイズ10分
6
構造体とメソッド
01. 構造体15分
02. 初期化とフィールド15分
03. メソッド15分
04. ポインタレシーバ20分
05. New関数の慣習15分
06. 構造体のスライス15分
07. つくる: Itemで再設計20分
08. 第6章クイズ10分
7
ゴルーチンと並行処理のさわり
01. ゴルーチン15分
02. チャネル20分
03. 待ち合わせ20分
04. 並行の落とし穴20分
05. つくる: 並行集計20分
06. 第7章クイズ10分
8
Web API(net/http)
01. サーバーを立てる20分
02. ハンドラ関数20分
03. JSONを返す20分
04. ルーティング20分
05. 一覧API20分
06. 詳細APIと40420分
07. 出品API20分
08. つくる: API主要部完成25分
09. 第8章クイズ10分
9
総合制作
01. 仕様互換を仕上げる25分
02. Node版と差し替える25分
03. 1バイナリでデプロイ25分
04. 自由拡張25分
05. 完成と次のステップ20分

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つが揃って、はじめて動くプログラムになります。

要件

  1. "package" を渡したら 実行できるプログラムであることの宣言です を返す
  2. "import" を渡したら 他のまとまりの機能を借りる宣言です を返す
  3. "main" を渡したら プログラムの入り口になる関数です を返す
  4. そのどれでもないときは 分かりません を返す

入出力例

explainPart("package") → "実行できるプログラムであることの宣言です" explainPart("import") → "他のまとまりの機能を借りる宣言です" explainPart("main") → "プログラムの入り口になる関数です" explainPart("func") → "分かりません"

ヒント

`switch part {` と書き、`case "package":` のように分岐を並べます

Go の `switch` は当たった `case` を実行したら勝手に抜けます。`break` は要りません

どの `case` にも当たらなかったときのために、最後の `return "分かりません"` を残してください

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/10

関連レッスン

  • fmtで出力する

    PrintlnとPrintfを使い分けて、商品名と価格を整形して表示できるようになります。

  • go buildと1バイナリ

    コンパイルして1つの実行ファイルになる意味を知り、Goの配布の楽さを説明できるようになります。

  • つくる: 起動バナー

    第1章の知識だけでfleama-goの起動バナーを組み立て、複数行の整形出力を作れるようになります。

  • 第1章クイズ

    Goの特徴、go run、package main、fmtの使い分けについての理解を確認します。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 関数処理に名前を付けて再利用できる単位
  • 標準ライブラリPythonに同梱の公式モジュール群
  • 入出力input()はユーザーからの入力を文字列として受け取る関数。
main.go
学習モード
エディタを読み込んでいます

メモ

packageとmain

⌘S で保存