1. ホーム
  2. スクリプト・コラム
  3. ゴラン

囲碁言語switch条件文の基本的な使い方と例文詳細

2022-01-06 17:03:11

概要

  • 渡された条件によって異なる文が実行される
  • 各ケースブランチは一意であり、一致するまで上から下へ1つずつテストされます。

構文

最初の[式によるスイッチ]は

switch expression {
  case expression1,expression2, ... :
     Statement block 1
  case expression3, expression4, ... :
     statement name block 2
  default.
     statement block
}


2枚目【無表情スイッチ

switch {
  case expression1,expression2, ... :
     statement block 1
  case expression3, expression4, ... :
     statement name block 2
  default.
     statement block
}


3つ目の【スイッチの初期化、式】について

switch initialization; expression {
  case expression1,expression2, ... :
     Statement block 1
  case expression3, expression4, ... :
     statement name block 2
  default.
     statement block
}


備考

  1. デフォルトで各ケースが壊れる
  2. ブレークなし+フォールスルー
  3. パニックがエラーを報告する
  4. スイッチの後に何も表現しないことも可能
  5. switch は初期化ステートメントをサポートしていますが、それらはセミコロンで終了する必要があることに注意してください
  6. caseの後の値は一意である

例1[今日の日付から今日の曜日を表示する

func printWeekday() {
	day := time.Now().Weekday() //need to import time
	fmt.Printf("%s", "Today")
	switch int(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")
	case 6, 7:
		fmt.Println("Sunday")
	}

}


例2[分数に基づいてA,B,C,Dを表示する]の場合

func printScores() {
	fmt.Println()
	fmt.Println("Print A,B,C,D" based on scores)
	scores := 0
	fmt.Println("Please enter scores")
	fmt.Scanf("%d", &scores)
	fmt.Printf("score level:")
	switch {
	case scores > 90:
		fmt.Println("A")
	case scores > 80, scores > 70:
		fmt.Println("B")
	case scores > 60:
		fmt.Println("c")
	case scores > = 10:
		fmt.Println("D")
	default:
		fmt.Println("Do you have scores")
	}
}


例3 [カウント]の場合

func printEval() {
	fmt.Println()
	fmt.Println("three, arithmetic")
	var num1, num2 int
	fmt.Println("Please enter the first number: ")
	fmt.Scan(&num1)
	fmt.Println("Please enter the second number: ")
	fmt.Scan(&num2)
	var op string
	fmt.Println("Please enter the symbol [+ - * /] ")
	fmt.Scan(&op)
	fmt.Printf("%d%s%d=%d", num1,op, num2, eval(num1, num2, op))
}
func eval(a, b int, op string) int {
	var result int
	switch op {
	case "+":
		result = a + b
	case "-":
		result = a - b
	case "*":
		result = a * b
	case "/":
		result = a / b
	default:
		panic("unsupported operator:" + op)
	}
	return result
}


以上、Go言語基本スイッチ条件文の基本的な使い方と例の詳細でしたが、Go言語条件文の詳細については、スクリプトハウスの他の関連記事にもご注目ください