Conditions with if

The if statement

The if statement runs a block only when its condition is true, and the condition needs no parentheses.

Keep conditions simple and put the opening brace on the same line, exactly as the compiler requires.

package main import "fmt" func main() { age := 20 if age >= 18 { fmt.Println("adult") } if age < 18 { fmt.Println("minor") } }

go run .

adult

if-else chains

When several outcomes exclude each other, chain if with else if and finish with else for the fallback case.

Only the first block with a true condition runs, so order the checks from the most specific to the most general one.

package main import "fmt" func main() { score := 85 if score >= 90 { fmt.Println("excellent") } else if score >= 70 { fmt.Println("good") } else { fmt.Println("needs work") } }

go run .

good

If with initializer

An if statement can declare a short lived variable before the condition, separated by a semicolon.

The variable exists only inside the if and else blocks, which keeps the outer scope clean.

package main import "fmt" func main() { if n := 7 % 2; n == 0 { fmt.Println("even") } else { fmt.Println("odd") } }

go run .

odd

Guard clauses

A guard clause checks bad input first and returns early, so the main logic below stays flat and easy to read.

Prefer several small guards over one deeply nested condition whenever a function validates its arguments.

package main import "fmt" func check(age int) string { if age < 0 { return "age cannot be negative" } if age < 18 { return "minor" } return "adult" } func main() { fmt.Println(check(20)) fmt.Println(check(10)) fmt.Println(check(-1)) }

go run .

adult
minor
age cannot be negative

Next: switch

Article author: Arthur Isaev