if文は、条件の値に基づいてコード内の判断を行うために使用されます。Goのif文の構文は以下の通りです。
if condition {
// conditionがtrueのとき、実行されるコード
}
ここでのconditionとは、ブーリアン値(真または偽)として評価される式です。条件が真であれば、中括弧{}の中のコードが実行されます。条件が偽の場合、中括弧内のコードはスキップされ、if文の次の文から実行が継続されます。
if文の中にelse節を記述して、条件が偽の場合にコードを実行することもできます。
if condition {
// conditionがtrueのとき、実行されるコード
} else {
// conditionがfalseのとき、実行されるコード
}
それでは例を見てみましょう。
package main
import "fmt"
func main() {
// 変数i
i := 0
if i == 0 {
// もし変数iが0であればこのスコープ内を処理する
fmt.Println("i = 0")
} else if i == 1 {
// もし変数iが1であればこのスコープ内を処理する
fmt.Println("i = 1")
} else {
// 上記のどれにも該当しない場合はこのスコープ内を処理する
fmt.Println("other")
}
}
基本的なif文の他に、if文の中で変数を宣言して初期化することで、より簡潔な形でif文を使用することも可能です。これは、if文の範囲内で変数を宣言し、条件が真である場合に実行されるコードでその変数を使用したい場合に有効です。
if x := 42; x == 42 {
// xが42であれば、実行されるコード
}
この例では、変数xはif文の中で宣言、初期化されており、if文に限定されたスコープを持っています。変数xはif文の外ではアクセスできません。
また、if文の条件の前に短いステートメントを付けて使用することも可能です。この短い文は、条件の中で使用される変数の宣言と初期化に使用することができます。
if v := calculateValue(); v > 10 {
// calculateValue()の結果が10より大きい場合に実行されるコード
}
この例では、条件の前にv := calculateValue()という短い文が実行され、calculateValue()関数の結果が変数vに格納されます。その後、vが10より大きいかどうかが条件でチェックされ、大きい場合は中カッコで囲まれた部分のコードが実行されます。
package main
import "fmt"
func main() {
if value := calculateValue(); value > 10 {
fmt.Println("The value is greater than 10")
}
}
func calculateValue() int {
return 15
}
この例では、条件が評価される前にif文の中でcalculateValue関数が呼び出されています。calculateValue関数の結果は変数valueに格納され、value > 10という条件の中で使用されます。条件が真であれば、中括弧内のコードが実行され、文字列が表示されます。
このように、条件の前に短いステートメントを記述することで、条件内で使用する変数の宣言と初期化ができ、コードがより簡潔で読みやすくなります。
それでは他の例も見てみましょう。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
if currentHour := now.Hour(); currentHour < 12 {
fmt.Println("Good morning!")
} else if currentHour < 17 {
fmt.Println("Good afternoon!")
} else {
fmt.Println("Good evening!")
}
}