式を伴う `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 numberswitch { の後に値がない状態で使用していることに注目してください。これは、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式(ここでは空です)から分離します。これにより、同じ機能を維持しながら、コードをよりコンパクトにすることができます。
チャレンジ
初心者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)
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。