Go練習問題2-03:条件分岐(switch文)を理解しよう

記事内に商品プロモーションを含む場合があります

Go言語の初心者向け問題2-2:条件分岐(switch文)を理解しよう

この問題を解くために必要な知識:
レベル1の知識論理演算子と代入演算子条件分岐(if-else文)条件分岐(switch文)ループ処理(for文)ラベルとgoto文無限ループ配列スライスとキャパシティ整列と検索マップループ処理(range文)サードパーティパッケージ

<<前の問題 問題集Top 次の問題>>

Go言語の文法「条件分岐(switch文)」とは





ここでは条件分岐(switch文)の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。

Go言語で条件分岐を行う際、よく使われる構文の一つに switch 文があります。

この文法は、複数の条件に基づいて異なる処理を実行する場合に非常に便利です。 if-else 文と同様に条件分岐を行いますが、 switch 文はコードがより簡潔で読みやすくなるため、多くの分岐がある場合に特に有効です。

基本的な switch 文の使い方

switch 文の基本構文は次のようになります。

package main

import "fmt"

func main() {
    day := 3

    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    case 4:
        fmt.Println("Thursday")
    case 5:
        fmt.Println("Friday")
    default:
        fmt.Println("Weekend")
    }
}

構文の説明

  1. switch キーワードと変数: switch の後に続く変数 day は、評価される対象です。この変数の値に基づいて、次の case が順にチェックされます。
  2. case キーワード: case の後に続く値が day の値と一致した場合、そのブロック内のコードが実行されます。
  3. default キーワード: すべての case に一致しない場合、default ブロック内のコードが実行されます。
  4. ブレークの省略: Go の switch 文では、各 case ブロックが終了すると自動的に break されるため、break 文を明示的に書く必要はありません。

応用: 複数の値に対応する case

Go の switch 文では、一つの case に複数の値を指定することができます。

package main

import "fmt"

func main() {
    day := 6

    switch day {
    case 1, 2, 3, 4, 5:
        fmt.Println("Weekday")
    case 6, 7:
        fmt.Println("Weekend")
    default:
        fmt.Println("Invalid day")
    }
}

このように、 switch 文は複数の条件を簡潔に扱うことができ、読みやすいコードを実現します。

まとめ

switch 文は、複数の条件を効率的に処理するための強力なツールです。

Go では switch 文を使うことで、複雑な if-else のチェーンを避け、コードをより簡潔に保つことができます。

初心者にとっても使いやすく、特に条件分岐が多い場合にその利点が発揮されます。

Go練習問題2-3:switch 文を使って季節を判定しよう

ユーザーに1から4の数字を入力させ、それに対応する季節を表示するプログラムを作成してください。

数字が1なら春、2なら夏、3なら秋、4なら冬を表示します。それ以外の数字が入力された場合は「無効な入力です」と表示してください。

このプログラムでは、switch文を使用して条件分岐を行います。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. ユーザーから1〜4の整数を入力させること。
  2. switch文を使用して、入力された整数に応じて以下のメッセージを表示すること:
    • 1が入力された場合: 「春です。桜が咲いています。」
    • 2が入力された場合: 「夏です。海に行きましょう!」
    • 3が入力された場合: 「秋です。紅葉が美しいです。」
    • 4が入力された場合: 「冬です。雪が降っています。」
  3. 1〜4以外の数字が入力された場合は「無効な入力です。1〜4の数字を入力してください。」と表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

1〜4の数字を入力してください (1: 春, 2: 夏, 3: 秋, 4: 冬):
2
夏です。海に行きましょう!

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.package宣言
 1-1.mainパッケージの宣言

2.import文
 2-1. fmtパッケージのインポート

3.main関数の定義
 3-1. 整数型の変数 season を宣言

4.標準入力と出力
 4-1. fmt.Printlnでユーザーに入力を促すメッセージを表示
 4-2. fmt.Scanlnでユーザーからの入力を受け取る

5.条件分岐(switch文)
 5-1. switch文による条件分岐の開始
  5-1-1. case 1: がマッチした場合、「春です。桜が咲いています。」を表示
  5-1-2. case 2: がマッチした場合、「夏です。海に行きましょう!」を表示
  5-1-3. case 3: がマッチした場合、「秋です。紅葉が美しいです。」を表示
  5-1-4. case 4: がマッチした場合、「冬です。雪が降っています。」を表示
  5-1-5. default: でどの case にもマッチしない場合、「無効な入力です。1〜4の数字を入力してください。」を表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

package main

import (
    "fmt"
)

// main関数は、季節に対応するメッセージを表示するプログラムです。
func main() {
    // ユーザーに1〜4の数字を入力させ、対応する季節を表示します。
    var season int

    // ユーザーに入力を求める
    fmt.Println("1〜4の数字を入力してください (1: 春, 2: 夏, 3: 秋, 4: 冬):")
    fmt.Scanln(&season)

    // switch文による条件分岐
    switch season {
    case 1:
        /*【穴埋め問題1】
        ここに「春です。桜が咲いています。」というメッセージを表示するコードを書いてください。
        */
    case 2:
        /*【穴埋め問題2】
        ここに「夏です。海に行きましょう!」というメッセージを表示するコードを書いてください。
        */
    case 3:
        /*【穴埋め問題3】
        ここに「秋です。紅葉が美しいです。」というメッセージを表示するコードを書いてください。
        */
    case 4:
        /*【穴埋め問題4】
        ここに「冬です。雪が降っています。」というメッセージを表示するコードを書いてください。
        */
    default:
        /*【穴埋め問題5】
        ここに「無効な入力です。1〜4の数字を入力してください。」というメッセージを表示するコードを書いてください。
        */
    }
}

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

package main

import (
    "fmt"
)

// main関数は、季節に対応するメッセージを表示するプログラムです。
func main() {
    // ユーザーに1〜4の数字を入力させ、対応する季節を表示します。
    var season int

    // ユーザーに入力を求める
    fmt.Println("1〜4の数字を入力してください (1: 春, 2: 夏, 3: 秋, 4: 冬):")
    fmt.Scanln(&season)

    // switch文による条件分岐
    switch season {
    case 1:
        fmt.Println("春です。桜が咲いています。")
    case 2:
        fmt.Println("夏です。海に行きましょう!")
    case 3:
        fmt.Println("秋です。紅葉が美しいです。")
    case 4:
        fmt.Println("冬です。雪が降っています。")
    default:
        // 1〜4以外の値が入力された場合の処理
        fmt.Println("無効な入力です。1〜4の数字を入力してください。")
    }
}

正解コードの解説

このGo言語のコードは、ユーザーからの入力に応じて、対応する季節を表示するプログラムです。

switch文を使って、入力された数値に基づいて条件分岐を行い、それぞれの季節に対応するメッセージを表示します。

各部分の役割と動作を理解し、Go言語の基本的な条件分岐の使い方を学びましょう。

パッケージとインポート

package main

import (
    "fmt"
)
  • package main:このコードは、実行可能なプログラムのエントリポイントとして動作することを示しています。
  • import "fmt"fmtパッケージは、標準入力・出力を行うための関数が含まれており、ここではユーザーへのメッセージ表示や入力の受け取りに使用します。

メイン関数の定義

func main() {
  • main関数はGoプログラムのエントリポイントです。プログラムはこの関数から実行を開始します。

変数の宣言とユーザー入力

    var season int
    fmt.Println("1〜4の数字を入力してください (1: 春, 2: 夏, 3: 秋, 4: 冬):")
    fmt.Scanln(&season)
  • var season int:整数型の変数 season を宣言しています。ここにユーザーからの入力値が格納されます。
  • fmt.Printlnfmt.Scanln:ユーザーにメッセージを表示し、入力を受け取るために使用します。

switch文による条件分岐

    switch season {
    case 1:
        fmt.Println("春です。桜が咲いています。")
    case 2:
        fmt.Println("夏です。海に行きましょう!")
    case 3:
        fmt.Println("秋です。紅葉が美しいです。")
    case 4:
        fmt.Println("冬です。雪が降っています。")
    default:
        fmt.Println("無効な入力です。1〜4の数字を入力してください。")
    }
}
  • switch文:season変数の値に基づいて、適切なメッセージを表示します。switch文は、複数の条件を扱う際にif-else文よりも簡潔に書けるため便利です。
  • caseキーワード:switchの中で特定の値にマッチする場合に実行するコードブロックを示します。
  • default:すべてのcaseに一致しなかった場合に実行されるコードを定義します。
<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Go練習問題集へ戻る
    トップページへ戻る