1. 在庫が3のとき
  2. 在庫が0のとき
  3. 在庫が1のとき
コース一覧
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

var name string = "きのこ図鑑" name := "きのこ図鑑" // 同じ意味

:= は「宣言して、同時に値を入れる」記号です。var も型も要りません。型は値から決まります。

実際の Go のコードでは、関数の中はほとんどが := です。var を見かけるのは、後で説明する2つの場面くらいになります。

:= が使えない場所

関数の外では使えません。

Go

package main name := "きのこ図鑑" // エラー var name = "きのこ図鑑" // これならよい func main() { price := 1200 // ここは使える }

関数の外は宣言だけを書く場所なので、var const func type のどれかで始める決まりになっています。

var を使う2つの場面

1つ目は、値をまだ決めないとき。

Go

var total int // 0 から始めたい

:= は値が要るので、この書き方はできません。

2つ目は、型を自分で選びたいとき。

Go

price := 1200 // int になる var price float64 = 1200 // float64 にしたい

小数を扱う予定があるなら、最初から float64 で宣言しておきます。

:= は少なくとも1つが新しい変数

複数を同時に宣言できます。

Go

name, price := "きのこ図鑑", 1200

このとき、左側の少なくとも1つが新しい変数であれば := を使えます。

Go

name, price := "きのこ図鑑", 1200 name, stock := "中古スマホ", 3 // name は上書き、stock は新規。これでよい

全部が既にある変数だと、:= は使えません。その場合は = だけを使います。この規則は、第4章で複数の戻り値を受けるときに効いてきます。

要件

  1. := を使って変数を宣言する
  2. 在庫が1以上なら 商品名 残りN点 の形を返す
  3. 在庫が0なら 商品名 売切れ を返す

入出力例

stockNote("きのこ図鑑", 3) → "きのこ図鑑 残り3点" stockNote("きのこ図鑑", 0) → "きのこ図鑑 売切れ" stockNote("中古スマホ", 1) → "中古スマホ 残り1点"

ヒント

`label := name` のように、コロンとイコールを続けて書きます

`残り%d点` の部分に半角スペースは入りません。商品名との間だけ1つ入ります

0のときを先に判定して `return` すると、下の行はそのまま書けます

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

関連レッスン

  • ゼロ値(Goならでは)

    初期化しなかった変数の値を予言できるようになり、Goに未定義が無い理由を説明できます。

  • 基本の型

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

  • 暗黙変換なし

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

  • 定数とiota

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

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

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

  • 関数処理に名前を付けて再利用できる単位
  • 変数データに名前をつけて参照する仕組み
  • 戻り値呼び出し元への返答を表す点線矢印
main.go
学習モード
エディタを読み込んでいます

メモ

:= の短縮宣言

⌘S で保存