Go言語のif文での分岐処理を行いましたが、もっと細かく分岐処理を行うことができるのは、他のプログラミング言語と同様にGo言語も同じです。
if-elseという形での分岐、if-else if-elseというおなじみの形での処理です。
この形について見て行きましょう。
if-else文の条件分岐
if文では条件が成立した時の処理を行いますが、条件が成立しなかった場合の処理も記述するのがif-else文です。
次のような形の処理になります。
if 条件式 {
処理コードA
} else {
処理コードB
}
if文の条件式が成立している場合は、処理コードAを実行し、そうで無い場合は処理コードBを実行するという意味になります。
具体的なコードで見て行きましょう。
package main
import "fmt"
func main() {
x := 15
if x >= 10 {
fmt.Println("変数xは10以上です。")
} else {
fmt.Println("変数xは10未満です。")
}
}
変数xの値は15で、x >= 10 を満たしているので、「変数xは10以上です。」と出力されます。xの値が5などであれば、else以下の処理が実行されます。
実行結果は次のようになります。
変数xは10以上です。
これで、条件が成立した場合の処理と、成立しなかった場合の処理で分岐できるのがわかります。
else if文を使った分岐処理
else ifでブロックを作ることで、if文の条件の分岐を複数作ることができます。
次のような形が基本となります。
if 条件式A {
処理コードA
} else if 条件式B {
処理コードB
} else {
処理コードC
}
条件式Aが成立する場合に処理コードAを、条件式Bが成立する場合に処理コードBを、これらの条件が成立しなかった場合は処理コードCを実行します。
コードを書いて見ましょう。
package main
import "fmt"
func main() {
x := 6
if x >= 10 {
fmt.Println("変数xは10以上です。")
} else if x >= 5 {
fmt.Println("変数xは5以上10未満です。")
} else {
fmt.Println("変数xは5未満です。")
}
}
if-else文の分岐よりも多くの条件を評価することができるのがわかります。
このelse ifのブロックを増やせば、もっと細かい条件分岐をすることができます。
ただし、この条件分岐の条件式は記述する順番に注意する必要があります。
次のようなコードは、思ったような結果にはなりません。
package main
import "fmt"
func main() {
x := 100
if x >= 10 {
fmt.Println("変数xは10以上です。")
} else if x >= 20 {
fmt.Println("変数xは20以上です。")
} else {
fmt.Println("変数xは10未満です。")
}
}
xは100ですから、最初の条件式の x >= 10 が成立しているので、その部分が次のように出力されます。
変数xは10以上です。
ただ、else if ブロックの x >= 20 も本来は成立しているわけですから、正しい処理がされているわけではありません。
このあたりの条件式の順番には注意しましょう。
Pythonでコードを書くと…
では、Pythonでも同様コードを書いて見ましょう。
def main():
x = 4
if x >= 10:
print("変数xは10以上です。")
elif x >= 5:
print("変数xは5以上10未満です。")
else:
print("変数xは5未満です。")
if __name__ == "__main__":
main()
ここでは、Goのコードと同じ条件で、変数の値を4で評価するコードを書いています。
Pythonではelse ifと書かずにelifと書くのが特徴です。
結果は以下になります。
変数xは5未満です。
Pythonのif文については、以下にまとめています。
最後に
Go言語のif文について、else if、elseのブロックを使うことで複数の条件分岐の処理を行う方法について見てきました。
if文の条件式が成立しなかった場合の処理を、elseブロックを使って記述します。
else ifブロックを使うことで、条件式をもっと増やして評価することができます。
else ifブロックを複数利用する時は、先に書いたコードから条件が評価されるので、あとのコードが無視されないように順番には気をつける必要があります。