# section3switch文 switch文では、ある変数の値が何かという条件を「case」で始まる文で評価し、条件が満たされたときに特定の処理を行う。一度条件が満たされれば再び評価しない。条件が満たされなければ何もせずに終わる、などの性質を利用すると、便利な使い方ができる。 ```go package main import "fmt" func main() { commands := []string{"O", "S", "O", "S", "E", "q"} for i := 0; i < len(commands); i++ { switch commands[i] { case "N": fmt.Printf("[%s]新規文書を作成します。\n", commands[i]) case "O": fmt.Printf("[%s]開くファイルを指定してください。\n", commands[i]) case "S": fmt.Printf("[%s]ファイルを保存しました。\n", commands[i]) case "Q": fmt.Printf("[%s]終了します。よろしいですか。\n", commands[i]) default:   fmt.Printf("[%s]無効なコマンドです。\n", commands[i]) } } } 実行結果 [O]開くファイルを指定してください。 [S]ファイルを保存しました。 [O]開くファイルを指定してください。 [S]ファイルを保存しました。 [E]無効なコマンドです。 [q]無効なコマンドです。 ``` # 式の値で場合分け Go言語ではcase文で数値の大小関係を評価することが可能である。 ```go package main import "fmt" func main() { age := []int{18, 22, 56, 39, 42, 62, 27} gen := [3]int{} dummy := true for i := 0; i < len(age); i++ { switch dummy { case age[i] > 49: gen[2]++ case age[i] > 29: gen[1]++ default: gen[0]++ } } fmt.Printf("%d名のうち:\n", len(age)) fmt.Printf("50代以上は%d名\n", gen[2]) fmt.Printf("30-40代は%d名\n", gen[1]) fmt.Printf("20代以下は%d名\n", gen[0]) } ``` switch文で評価する変数[dummy]には、ブール型の固定値[true]を代入しておく。これは<u>**trueという文字列**</u>を代入しているのではなく、今回においてはケースの評価を参照した際に[true]であった際に処理をする…という役割を与えている。 trueかfalseかで場合分けする方法はよく使われるため、dummyを省略して以下のように書くことも可能である。 ```go switch { case age[i] >49: case age[i] >29: default: } ``` ###### tags:`1日で基本が身につくGo言語`