スイッチを使用してスイッチの6つの方法


基本スイッチ


スイッチケースは、特定の変数に対して行われる複数の条件チェックが一般的に使用されます.あなたのコードで複数のif文を持つより、理解しやすいです.
switchステートメント式を評価し、可能な選択肢のリストから一致するコードのブロックを実行します
package main

import "fmt"

func main() {
    status := 1

    switch status {
        case 0:
            fmt.Println("Status - Todo")

        case 1:
            fmt.Println("Status - In progress")

        case 2:
            fmt.Println("Status - Done")
    }

}
上記のプログラムでは、整数値に基づいて異なる値に対応できるステータス変数があります.ビジネスロジックは、以下を示唆します
0 -藤堂
1 -進行中で
2 -完了
switchステートメントを使用して、statusの値を確認し、対応する値を出力できます.

デフォルトステートメントで切り替える


評価される式が定義されているケースのリストに存在しない値を含む場合があります.defaultステートメントは、定義された他のケースとの一致がない場合、その場合を実行することによって我々の救助に来ます.
package main

import "fmt"

func main() {
    status := 1

    switch status {
        case 0:
            fmt.Println("Status - Todo")

        case 1:
            fmt.Println("Status - In progress")

        case 2:
            fmt.Println("Status - Done")

        default:
            fmt.Println("Not valid status")
    }

}

条件のないスイッチ


switch文は、定義するときに式以下の文をサポートします.複数の条件をチェックして、それらの条件を指定したい場合は、switch文の式を削除できます
package main

import "fmt"

func main() {
    status := 1

    switch {
        case status == 0:
            fmt.Println("Status - Todo")

        case status == 1:
            fmt.Println("Status - In progress")

        case status == 2:
            fmt.Println("Status - Done")

        default:
            fmt.Println("Status - Not valid")
    }

}

ケースリストを切り替える


別の一般的なユースケースは、複数の式を持つことです.複数の式はカンマで区切られます.
package main

import "fmt"

func main() {
    status := 4

    switch status{
        case 0:
            fmt.Println("Status - Todo")

        case 1:
            fmt.Println("Status - In progress")

        case 2, 3, 4:
            fmt.Println("Status - Done")

        default:
            fmt.Println("Status - Not valid")
    }

}

Fallthroughステートメントで切り替える


switchの文の実行は、上から下へ行きます.特定のケースがtrueであると評価するとき、文の実行は起こります.コントロールは成功した場合の実行の後、スイッチから飛び出す.fallthroughステートメントは、実行されたケースの後、ケースの最初の声明にコードの実行を移すのに用いられます

フォールスルーは、条件に関係なく連続した場合を実行する場合に使用できます
package main

import "fmt"

func main() {

    switch status := 3; {
    case status < 2:
        fmt.Println("Status is not done")
    case status < 4:
        fmt.Println("Status is done")
        fallthrough
    case status > 6:
        fmt.Println("Status is done but has some issues")
    }

}
出力
ステータスはステータスが行われますが、いくつかの問題があります
Fallthroughについての注意事項
  • Fallthroughケースがfalseに評価されても、次のケースを実行します.上の例は、最後のケースが実行されますが、条件status > 6がfalseであることを示します.
  • Fallthroughは、あなたのケース
  • の最後の声明でなければなりません
  • フォールスルーは最後のケース
  • に存在することができません

    break文で切り替える


    CASEステートメントの実行はbreakステートメントを使用して停止できます.
    package main
    
    import "fmt"
    
    func main() {
    
        switch status := 2; {
        case status < 2:
            fmt.Println("Status is not done")
        case status < 4:
            fmt.Println("Status is done")
            if (status == 2) {
                break;
            }
            fallthrough
        case status > 6:
            fmt.Println("Status is done but has some issues")
        }
    
    }
    
    出力
    状態
    上記のプログラムでは、2のときに2番目のケースが実行される.if条件がtrueになるので、breakが実行されることなくスイッチ声明の終わりに制御を送るfallthroughは呼ばれます
    同様に、breakステートメントの後にラベルを指定することで、ラベル付きループから中断できます
    package main
    
    import (
        "fmt" 
        "math/rand"
    )
    
    func main() {
    
        outerloop:
        for {
            status := rand.Intn(6)
            switch status {
            case 0,1,2:
                fmt.Println("Waiting for status to complete")
            case 3,4,5:
                fmt.Println("Status is done")
                break outerloop
            }
        }
    
    }
    
    条件のないforループは、break文に入るまで無限ループを実行します.詳細については、このブログの記事にループを持つことができます.
    https://www.eternaldev.com/blog/go-learning-for-loop-statement-in-depth/status変数は、各々のループ反復のために0から5までの間のランダムな値を含みます.その値が3未満であるならば、「完了するのを待つこと」は印刷されます.値が3以上の場合は、“statusが完了しました”と表示されます.
    このプログラムは、ランダム値関数から3から5まで値を取得するまで実行されます.

    実用的な割り当て


    ユーザーからタスクのタスクおよびステータスの名前をとって、switch文を使用しているタスクのための残留ステータスを出力する
  • の単純なAPP
  • ステータスリスト-作成、スプリント準備、進行中の作業、完了、展開、検証

  • ユーザー入力-「機能A」、「進行中の仕事」-出力-3つのステップは、係留中の
  • です

  • ユーザー入力-「機能C」、「つくられた」-出力- 5ステップは、係留中の
  • です
    次のライブコードエディターを使用して課題に取り組む
    https://www.eternaldev.com/blog/go-switch-6-ways-of-using-switch-in-go/

    概要


    我々のメーリングリストに加入して、我々の不協和コミュニティに加わって
    Discord