1. int のゼロ値
  2. float64 のゼロ値
  3. string のゼロ値
  4. bool のゼロ値
  5. 知らない型のとき
コース一覧
Go入門
ゼロ値(Goならでは)

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分

ゼロ値(Goならでは)

初期化しない変数にも値が入っている

Go

var count int var name string var sold bool

値を書いていません。ではこの3つには何が入っているのでしょうか。

プレーンテキスト

count 0 name ""(空文字) sold false

型ごとに決まった初期値が入ります。これを ゼロ値 と言います。

未定義が無いということ

他の多くの言語には、undefined や null のような「まだ何も入っていない」状態があります。Go にはそれがありません。宣言した瞬間に、必ず何かが入っています。

この違いは、書くコードの形を変えます。

プレーンテキスト

他の言語 まず「値が入っているか」を確かめてから使う Go いきなり使える。0 や "" として扱える

合計を出すコードが分かりやすい例です。

Go

var total int // 0 から始まる for _, p := range prices { total += p }

total = 0 と書く必要がありません。最初から 0 だからです。

主な型のゼロ値

プレーンテキスト

int 0 float64 0 string "" bool false

覚え方は「何も無い状態を、その型で表すとどうなるか」です。数なら 0、文字なら空、真偽なら false。素直な並びになっています。

落とし穴もある

便利な一方で、書き忘れに気づきにくいという面があります。

Go

var price int // ここで price に値を入れるのを忘れた fmt.Println(price) // 0 と表示される。エラーにはならない

他の言語なら undefined が出て異変に気づけますが、Go では 0 として静かに進みます。

0 が正しい 0 なのか、入れ忘れた 0 なのかは区別できません。この区別が要る場面では、第4章でやる「値とエラーを一緒に返す」書き方を使います。ゼロ値の便利さと、この曖昧さは表と裏です。

要件

  1. "int" を渡したら 0 を返す
  2. "float64" を渡したら 0 を返す
  3. "string" を渡したら 空文字 を返す
  4. "bool" を渡したら false を返す
  5. そのどれでもないときは 分かりません を返す

入出力例

zeroValueOf("int") → "0" zeroValueOf("float64") → "0" zeroValueOf("string") → "空文字" zeroValueOf("bool") → "false" zeroValueOf("byte") → "分かりません"

ヒント

`int` と `float64` はどちらも `0` です。`case "int", "float64":` とカンマで並べると1つの case にまとめられます

返すのは文字列です。数の 0 ではなく `"0"` と書きます

`bool` も文字列で `"false"` を返します

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

関連レッスン

  • 基本の型

    int・float64・string・boolを使い分け、在庫数や価格を適切な型で持てるようになります。

  • 暗黙変換なし

    intとfloat64をそのまま足せない理由を知り、明示的な型変換を書けるようになります。

  • 定数とiota

    constで変わらない値を定義し、iotaで連番の状態を作れるようになります。

  • つくる: 商品データ表示

    第2章の知識で商品3件を型付きで持ち、整形して表示できるようになります。

main.go
学習モード
エディタを読み込んでいます

メモ

ゼロ値(Goならでは)

⌘S で保存