Menu
Coddy logo textTech

式を伴う `switch`

CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 40/109。

Goにおけるswitch式について学びましょう。これを使用すると、switch文の中で値を直接評価できるようになります。

まず、式を伴う switch 文を使用して、数値が正、負、またはゼロであるかを確認する方法を見てみましょう。

num := -5
switch {
case num > 0:
    fmt.Println("Positive number")
case num < 0:
    fmt.Println("Negative number")
default:
    fmt.Println("Zero")
}

このコードを実行すると、プログラムは画面に次のように表示します。

Negative number

switch { の後に値がない状態で使用していることに注目してください。これは、Goが各case式をブール条件として評価することを意味します。num は-5なので、2番目のcaseである num < 0 がtrueと評価され、"Negative number" が出力されます。

switch文の中で直接変数を初期化することもできます。その仕組みを見てみましょう:

switch num := -5; {
case num > 0:
    fmt.Println("Positive number")
case num < 0:
    fmt.Println("Negative number")
default:
    fmt.Println("Zero")
}

このコードを実行すると、同じ結果が得られます:

Negative number

この例では、numをswitch文の中で直接宣言して初期化しました。セミコロンは、初期化をswitch式(ここでは空です)から分離します。これにより、同じ機能を維持しながら、コードをよりコンパクトにすることができます。

challenge icon

チャレンジ

初心者
このチャレンジでは、Go言語でシンプルな switch 式を使用する練習をします。switch 文を使用して、曜日の名前に基づいてその説明を決定するようにコードを完成させる必要があります。

変数 dayName は、すでに "Wednesday" という値で定義されています。あなたのタスクは、switch 式を使用して description 変数に以下を設定することです:
- Monday の場合は "Start of the week"
- Wednesday の場合は "Midweek"
- Friday の場合は "Almost weekend"
- Saturday または Sunday の場合は "Weekend"
- その他の曜日の場合は "Regular day"

チートシート

Goのswitch式を使用すると、switchステートメント内で直接条件を評価できます。

各caseでブール式を評価するには、値のないswitch {を使用します:

num := -5
switch {
case num > 0:
    fmt.Println("Positive number")
case num < 0:
    fmt.Println("Negative number")
default:
    fmt.Println("Zero")
}

セミコロンを使用して初期化とswitch式を区切ることで、switchステートメント内で直接変数を初期化できます:

switch num := -5; {
case num > 0:
    fmt.Println("Positive number")
case num < 0:
    fmt.Println("Negative number")
default:
    fmt.Println("Zero")
}

自分で試してみよう

package main

import "fmt"

func main() {
	// 曜日の名前はすでに定義されています
	dayName := "Wednesday"
	
	// 説明を格納するための変数
	var description string
	
	// TODO: dayNameに基づいて説明を設定するswitch文を記述してください
	// Mondayの場合: "Start of the week"
	// Wednesdayの場合: "Midweek"
	// Fridayの場合: "Almost weekend"
	// SaturdayまたはSundayの場合: "Weekend"
	// その他の日の場合: "Regular day"
	
	
	// 結果を出力
	fmt.Printf("%s is %s\n", dayName, description)
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン