
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)
// }
//}
}