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") } }
構文の説明
switch
キーワードと変数:switch
の後に続く変数day
は、評価される対象です。この変数の値に基づいて、次のcase
が順にチェックされます。case
キーワード:case
の後に続く値がday
の値と一致した場合、そのブロック内のコードが実行されます。default
キーワード: すべてのcase
に一致しない場合、default
ブロック内のコードが実行されます。- ブレークの省略: 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〜4の整数を入力させること。
switch
文を使用して、入力された整数に応じて以下のメッセージを表示すること:- 1が入力された場合: 「春です。桜が咲いています。」
- 2が入力された場合: 「夏です。海に行きましょう!」
- 3が入力された場合: 「秋です。紅葉が美しいです。」
- 4が入力された場合: 「冬です。雪が降っています。」
- 1〜4以外の数字が入力された場合は「無効な入力です。1〜4の数字を入力してください。」と表示すること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
1〜4の数字を入力してください (1: 春, 2: 夏, 3: 秋, 4: 冬): 2 夏です。海に行きましょう!
この問題を解くヒント
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の数字を入力してください。」を表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
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.Println
とfmt.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を活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。