updated on 2020-10-20
package main import "fmt" func main() { x := 1 if x == 1 { fmt.Println("xは1") } else if x == 2 { fmt.Println("xは2") } else { fmt.Println("xは1でも2でもない") } }
条件式内だけで使用する変数をif文の式で定義できる
if a := f(); a > 0 { fmt.Println(a) } else { fmt.Println(2*a) }
大量のif-elseをつなぐより可動性が上がる
何もしないとbreakになる
switch(条件){
case 値 :
処理
・・・
default:
処理
}
例
package main import "fmt" func main(){ a := "2" switch a { case "1": fmt.Println("1つめ") case "2": fmt.Println("2つめ") // 2つめが出力される default: fmt.Println("3つめ") } }
switch直後に条件を指定しない場合は、caseに式を指定する
package main import "fmt" func main(){ a := "2" switch { case a == "1": fmt.Println("1つめ") case a == "2": fmt.Println("2つめ") // 2つめが出力される default: fmt.Println("3つめ") } }
fallthroughステートメントを使うと、式switchの次のcase節の先頭のステートメントへ制御をうつす(この場合caseの条件はみない)
package main import "fmt" func main(){ a := 3 switch a { case 1: fmt.Println("1つめ") case 2,3: fmt.Println("2つめ") // 2つめが出力される fallthrough case 4,5: fmt.Println("3つめ") // 2つめが出力される default: fmt.Println("4つめ") } }
(出力)
2つめ
3つめ
処理を繰り返す時に使用する。最初にforを書くのでfor文と呼ばれる
for 初期化式 ; 条件式 ; 増減式 {
繰り返される箇所
}
無限ループ
for { }
rangeを使った繰り返し
for i, v := range []int{1, 2, 3} { }
import "fmt" func main(){ for i := 0; i < 3; i++ { fmt.Println(i) // 0 1 2 が出力される } color1 := []string{"赤","黄","青"} for i := 0; i < len(color1); i++ { fmt.Println(color1[i]) // 赤 黄 青が出力される } for i, v := range []string{"猿", "鳥", "犬"} { fmt.Printf("インデックス:%d 値:%s\r\n", i, v) } }
(出力)
0
1
2
赤
黄
青
インデックス:0 値:猿
インデックス:1 値:鳥
インデックス:2 値:犬
ループから抜け出すのに使用する
package main
import "fmt"
// breakによる無限ループの脱出
func main() {
var i int // 0
for {
if i%2 == 1 {
fmt.Println(i) // 1が出力される
break
}
i++
}
}
抜け出したいループをラベル指定でbreak
ラベル名はLOOPやLなどの名前がつけられることが多い
package main import "fmt" // ラベル指定のbreak func main() { var i int LOOP: for { switch { case i%2 == 1: fmt.Println(i) break LOOP } i++ } }
1から100のうち、5の倍数を全て改行しながら出力するプログラム
package main import "fmt" func main() { for i := 1; i <= 100; i++ { if i%5 == 0 { fmt.Println(i) } } // switch版 //for i := 1; i <= 100; i++ { // switch { // case i%5 == 0: // fmt.Println(i) // } //} }