English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎チュートリアル

Golang 控制文

Golang 関数 & メソッド

Golang 枠体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行

Golang エラ(Error)

Golang その他の雑多な項目

Go 言語のSwitch文

switch文脈は、実行をコードの異なる部分に転移するための多路分支文です。それは、表現式の値(caseと呼ばれることもあります)に基づいて効果的に実行を転移する方法を提供します。Go言語は2種類のswitch文をサポートしています:

  1. 式switch

  2. タイプswitch

式switch

式switchはC、C ++、Java言語のswitch文。それにより、式の値に基づいてコードの異なる部分に実行を分派する簡単な方法を提供します。

文法:

switch optstatement; optexpression{
    case expression1: 文..
    case expression2: 文..
    ...
    default: 文..
}

重要事項:

  • 式switchのoptstatementとoptexpressionはオプションの文です。

  • 同時に存在する場合optstatementおよびoptpressionその場合、それらの間にはセミコロン(;)を使用する必要があります。

  • switchに式が含まれていない場合、コンパイラはその式がtrueと仮定します。

  • オプションの文、つまりoptstatementは、変数の宣言、インクリメントやアサインメント文、関数呼び出しなどのシンプルな文を含みます。

  • オプションの文に変数がある場合、その変数の範囲はそのswitch文に限定されます。

  • switch文では、case文とdefault文にはbreak文が含まれていませんが、プログラムが必要な場合はbreak文とfallthrough文を使用できます。

  • デフォルト(default)文はswitch文ではオプションです。

  • caseが複数の値を含んでおり、これらの値はカンマ(、)で区切られている場合。

  • caseに式が含まれていない場合、コンパイラはその式がtrueと仮定します。

指定された数字が何曜日かを取得する例:

package main
import "fmt"
func main() {
    // Switch文は、例えばオプションの文、day := と同時に使用できます4 および式、例えば:day
    switch day := 4; 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:
        fmt.Println("Saturday")
    case 7:
        fmt.Println("Sunday")
    default:
        fmt.Println("Invalid")
    }
}

出力:

木曜日

switch文はオプションの文と式を含まない例:

package main 
  
import "fmt"
  
func main() { 
    var value int = 2 
      
      // switch文はオプションの文と式を含まない
   switch { 
       case value == 1: 
       fmt.Println("Hello") 
       case value == 2: 
       fmt.Println("Bonjour") 
       case value == 3: 
       fmt.Println("Namstay") 
       default:  
       fmt.Println("Invalid") 
   } 
  
}

出力:

Bonjour

デフォルトの文がないswitch文、case文の複数の値:

package main
import "fmt"
func main() {
    var value string = "five"
    //デフォルト文がないswitch文、case文の複数の値
    switch value {
    case "one":
        fmt.Println("C#")
    case "two", "three":
        fmt.Println("Go")
    case "four", "five", "six":
        fmt.Println("Java")
    }
}

出力:

Java

タイプswitch

型を比較したい場合、タイプswitchを使用します。このswitchでは、caseには、switch式に現れる型と比較する型が含まれています。

文法:

switch optstatement; typeswitchexpression{
    case typelist 1: 文..
    case typelist 2: 文..
    ...
    default: 文..
}

重要事項:

  • オプション文、つまりoptstatementで、switch式と同様です。

  • caseが複数の値を含んでおり、これらの値はカンマ(、)で区切られている場合。

  • タイプswitch文では、case文とdefault文にはbreak文が含まれていません。ただし、必要に応じてbreak文とfallthrough文を使用できます。

  • タイプswitch文では、デフォルト文はオプションです。

  • typeswitchexpressionは、結果が型である式です。

  • typeswitchexpression中で=演算子を使用して式を割り当てた場合、その変数の型はcase子句中の型に依存します。case子句に2種類以上の型が含まれている場合、変数の型はtypeswitchexpressionで変数を作成した型です。

package main
import "fmt"
func main() {
    var value interface{}
    switch q := value.(type) {
    case bool:
        fmt.Println("値はブール型")
    case float64:
        fmt.Println("値はfloat64型)
    case int:
        fmt.Println("値はint型")
    default:
        fmt.Printf("値の型は: %T", q)
    }
}

出力:

値の型は: <nil>