コース一覧
    Go基礎:制御構文
    つくる: 商品集計

    Go基礎:制御構文

    Goの分岐、反復、関数、エラー処理を体系的に学ぶ基礎コースです。

    1
    制御構文(forしかない世界)
    01. Goのif15分
    02. forしかない世界15分
    03. forの七変化15分
    04. Goのswitch15分
    05. 定番: FizzBuzz15分
    06. ループで集計15分
    07. つくる: 商品集計20分
    08. 第3章クイズ10分
    2
    関数とエラー処理
    01. funcで関数を作る15分
    02. 複数戻り値(Goならでは)15分
    03. if err != nil(Goの心臓)15分
    04. エラーを作る15分
    05. deferで後始末15分
    06. つくる: 検証つき関数群20分
    07. 第4章クイズ10分

    つくる: 商品集計

    条件付きの集計

    第3章の内容を全部使います。新しい知識は出てきません。

    プレーンテキスト

    if        条件で分ける
    for       繰り返す
    continue  条件に合わないものを飛ばす
    集計      合計・件数・平均

    作るのは、売切れを除いた集計です。

    プレーンテキスト

    販売中2件 合計2199円 平均1099円 (除外1件)

    2つの並びを同時に見る

    価格の並びと、売切れかどうかの並びを受け取ります。同じ添字が同じ商品を指します。

    プレーンテキスト

    prices   [1200, 999, 24800]
    soldOut  [false, false, true]
                ↑同じ商品

    1つの for で両方を見ます。

    Go

    for i := 0; i < len(prices); i++ {
    	if soldOut[i] {
    		continue
    	}
    	// ここに来るのは販売中のものだけ
    }

    continue で先に弾くと、集計の本筋が右に寄らずに済みます。前のレッスンで触れた形です。

    数える対象が2つある

    集めるものが増えます。

    プレーンテキスト

    販売中の件数
    販売中の合計
    除外した件数

    それぞれ入れ物を用意して、ループの中で更新します。continue で飛ばす直前に、除外の数を1つ増やしてください。

    Go

    if soldOut[i] {
    	skipped++
    	continue
    }

    順番が逆だと数えられません。continue から先は実行されないからです。

    全部が売切れのとき

    販売中が0件になります。ここで平均を出すと 0 で割ることになります。

    プレーンテキスト

    販売中0件 (除外3件)

    合計と平均を書かない形にしてください。前のレッスンでやった、0件を先に弾く判断がそのまま出てきます。

    順番に作る

    プレーンテキスト

    1. 全件を合計する(売切れを無視)
    2. continue で売切れを飛ばす
    3. 除外の件数を数える
    4. 販売中が0件のときを分ける

    1段ごとにテストを流してください。

    要件

    1. 売切れの商品は集計から外し、除外の件数として数える
    2. 販売中が1件以上なら 販売中N件 合計M円 平均K円 (除外L件) を返す
    3. 販売中が0件なら 販売中0件 (除外L件) を返す
    4. 平均は販売中の合計を販売中の件数で割る

    ヒント

    入れ物は3つ要ります。販売中の合計・販売中の件数・除外の件数です

    `skipped++` は `continue` より**前**に書いてください。後ろに書くと実行されません

    販売中が0件のときは、合計と平均を書かない別の形を返します。ここを忘れると 0 で割って止まります

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

    関連レッスン

    • 第3章クイズ

      if、for、switch、集計についての理解を確認します。

    • funcで関数を作る

      引数と戻り値に型を書いて関数を定義し、手数料の計算を切り出せるようになります。

    • ループで集計

      繰り返しの中で値を累積し、出品価格の合計と平均を計算できるようになります。

    • 定番: FizzBuzz

      判定とループを組み合わせ、Go版のFizzBuzzを自力で書けるようになります。

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

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

    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 判断YES/NO 分岐を表す菱形
    • テストバグを見つける工程
    main.go
    エディタを読み込んでいます

    メモ

    つくる: 商品集計

    ⌘S で保存