if文は、世の中のほとんどのプログラミング言語に存在し、プログラミングにおいて最も重要な制御文の1つです。
本記事では、Golangにおいてプログラムを堅牢かつ簡潔にするために、if文をどのように利用できるかを解説します。
Golangのif文とは
Golangのif文の構文はとてもシンプルです。
if文は条件式をboolean値で評価し、もしそれがtrueであれば、その後に続くコードブロックは実行され、そうでなければ実行されません。
if 条件式 {
// 処理
}
以下は、簡単なif文のコード例です。
package main
import (
"fmt"
)
func main() {
var i int = 98
if i == 98 {
fmt.Println("98です!") // 98です!
}
}
上記のコードでは、条件に一致しなければ何も起こりません。また、エラーも発生しません。
Golangのelse節
else節は、if式で条件が一致しない場合に、制御の流れを変えるために使用します。
以下は、if-elseブロックを使用した例です。
package main
import (
"fmt"
)
func main() {
if 7 % 2 == 0 {
fmt.Println("7は2で割り切れます。")
} else {
fmt.Println("7は2で割り切れません。")
}
}
// 出力結果: 7は2で割り切れません。
Golangのelse-if構文
else-ifは、条件式を複数用意したい時に使用します。
package main
import (
"fmt"
)
func main() {
var i int = 24
if i > 0 && v < 10 {
fmt.Println("0 ~ 10")
} else if i > 10 && v < 20 {
fmt.Println("10 ~ 20")
} else if i > 20 && v < 30 {
fmt.Println("20 ~ 30")
} else {
fmt.Println("30+")
}
}
// 出力結果: 20 ~ 30
if文の条件式で変数を初期化する
Golangのif文は、一番最初に初期化を行うことができます。
つまり、変数定義とその値の評価を同時に行うことが可能だということです。
以下はその実装例です。
package main
import (
"fmt"
)
func test() int {
return 98
}
func main() {
if i := test(); i == 98 {
fmt.Println("98です")
} else {
fmt.Println("98ではないです")
}
}
// 出力結果: 98です
Golangのネストされたif文
If文は任意の深さまでネストすることができます。
しかし、あまりに深くネストされたif構文は、ソフトウェアの柔軟性を損なわせる可能性があるので注意が必要です。
以下は、ネストしたif文の例です。
package main
import (
"fmt"
)
func main() {
var name string = "Tanaka"
var age int = 20
if name == "Tanaka" {
if age == 20 {
fmt.Println("私はTanakaです")
} else {
fmt.Println("人違いです")
}
} else {
fmt.Println("あなたは誰")
}
}
// 私はTanakaです
このように、ネストはどのような深さでも可能です。
また、Golangにおいてif式は三項演算子の必要性を代替します。詳しくは下記の記事で解説してます。