Goで条件分岐を行うには if 文を使います。ここでは if 文を使った条件分岐の方法について解説します。
if文の基本的な使い方
if 文は指定した条件式が真の時にだけ処理を実行します。条件を (…) で囲む必要はありません。{ … } の中括弧は必須です。
基本的な書式は次の通りです。
if 条件式 {
条件式が真の時に実行する文
}
条件式が真の時に実行する文
}
コードで確認しましょう。
package main
import “fmt”
func main() {
x,y := 1,2
if x > y {
fmt.Println(“x>y”)
}
}
import “fmt”
func main() {
x,y := 1,2
if x > y {
fmt.Println(“x>y”)
}
}
結果:なにも出力されない。
条件式が偽の時の処理(if…else)
if 文では指定した条件式が真の時に実行する処理をブロックの中に記述しますが、あわせて条件式が偽だった場合に実行する処理を記述することもできます。次の書式を使用します。
if 条件式 {
条件式が真の時に実行する文
…
} else {
条件式が偽の時に実行する文
…
}
条件式が真の時に実行する文
…
} else {
条件式が偽の時に実行する文
…
}
コードで確認しましょう。
package main
import “fmt”
func main() {
x,y := 1,2
if x > y {
fmt.Println(“x>y”)
} else {
fmt.Println(“x<y”)
}
}
import “fmt”
func main() {
x,y := 1,2
if x > y {
fmt.Println(“x>y”)
} else {
fmt.Println(“x<y”)
}
}
結果:
x<y
複数の条件式を使った条件分岐(if…else if…else)
if 文では単独の条件式だけではなく複数の条件式を使った条件分岐を記述することもできます。次の書式を使用します。
if 条件式1 {
条件式1が真の時に実行する文
…
} else if {
条件式1が偽で条件式2が真の時に実行する文
…
} else if {
条件式1及び条件式2が偽で条件式3が真の時に実行する文
…
} else {
すべての条件式が偽のときに実行する文
…
}
条件式1が真の時に実行する文
…
} else if {
条件式1が偽で条件式2が真の時に実行する文
…
} else if {
条件式1及び条件式2が偽で条件式3が真の時に実行する文
…
} else {
すべての条件式が偽のときに実行する文
…
}
コードで確認しましょう
package main
import “fmt”
func main() {
x,y,z := 1,2,3
if x > y {
fmt.Println(“x>y”)
} else if x > z {
fmt.Println(“x>z”)
} else {
fmt.Println(“x<y and x<z”)
}
}
import “fmt”
func main() {
x,y,z := 1,2,3
if x > y {
fmt.Println(“x>y”)
} else if x > z {
fmt.Println(“x>z”)
} else {
fmt.Println(“x<y and x<z”)
}
}
結果:
x<y and x<z
結論:
評価は上から順に行われます。最初に条件式 1 を評価し、真だった場合には次のブロック内の文を実行して if 文の次の処理へ移ります。条件式 1 が偽だった場合、次の条件式 2 を評価して、真だった場合は次のブロック内の文を実行して if 文の次の処理へ移ります。すべての条件式で同じことを繰り返し、最後にすべての条件式が偽だった場合に次のブロック内の文を実行します。
else ifは必要な数だけ記述することができます。また else の部分は不要であれば削除して構いません。