Go言語(golang) if文の使い方
Go言語のif文(条件分岐)の使い方
if [条件式] { // 何らかの処理 } else if [条件式] { // 何らかの処理 } else { // 何らかの処理 }
目次
条件式
以下の比較演算子と論理演算子を使ってif文の条件式を書きます。
比較演算子
== 左辺と右辺が等しい != 左辺と右辺が等しくない < 左辺が右辺より小さい <= 左辺が右辺と等しいか小さい > 左辺が右辺より大きい >= 左辺が右辺と等しいか大きい
bool型は、正しいか否か(true/false)を表す。
比較演算子を使うとbool型の値になる。
package main func main() { a := 1 == 1 println(a) // true b := 1 == 2 println(b) // false c := 1 != 1 println(c) // false d := 1 != 2 println(d) // true e := 1 < 1 println(e) // false f := 1 < 2 println(f) // true g := 1 <= 1 println(g) // true h := 1 <= 2 println(h) // true i := 1 > 1 println(i) // false j := 2 > 1 println(j) // true k := 1 >= 1 println(k) // true l := 2 >= 1 println(l) // true }
論理演算子
&& AND || OR ! NOT 否定
論理演算子を使うと比較演算子を使った比較を繋げることができる。
package main func main() { a := 1 == 1 && 2 > 1 println(a) // true b := 100 == 1 && 2 > 1 println(b) // false c := 1 == 1 || 2 > 1 println(c) // true d := 100 == 1 || 2 > 1 println(d) // true e := 100 == 1 || 100 < 1 println(e) // false f := 1 == 1 && (2 > 1 || 1 < 2) println(f) // true g := 1 != 1 println(g) // false h := 100 != 1 println(h) // true i := !(1 == 1) println(i) // false }
if文の基本的な使い方
条件式が true であれば そのあとの {}
内の処理が実行される
package main func main() { n := 10 if n == 10 { println("n is 10") // n is 10 } }
if ... else if
else if で複数の条件を書くことができる。
上に書いた条件が true の場合は、その後の条件で true でも実行されない。
つまり、先に true になった条件の {}
内の処理が実行される。
package main func main() { s := "baz" if s == "foo" { // 実行されない println(s) } else if s == "bar" { // 実行されない println(s) } else if s == "baz" { // 実行される println(s) // baz } }
if ... else
else で条件式がどれも false だったら実行する処理。
package main func main() { s := "baz" if s == "foo" { println(s) } else { // 実行される println(s) // baz } if s == "foo" { // 実行されない println(s) } else if s == "bar" { // 実行されない println(s) } else if s == "baz" { // 実行される println(s) // baz } else { // 実行されない println(s) } }
シンプルステートメント
if文のみで使用する変数は以下のように書くこともできる
if [変数名] := [変数の値]; [条件式] {
}
package main func main() { // 変数に代入 if n := 10; n > 100 { println(n) } else if n > 10 { println(n) } else { println(n) // 10 } // 変数 n は if文のスコープ内でのみ使用できるので以下はエラー println(n) // error }
関数の戻り値を変数に受け取る
package main func integer() (int, bool) { return 10, true } func main() { if n, ok := integer(); ok && n == 10 { println(n) // 10 } else { println(n) } }
条件式について
以下のように論理演算子を使って、いくつも条件を繋げると読みづらい。
なので、脱落方式で読みやすく書いたほうがいい
if i > 10 && i < 20 && i%2 == 0 && i/3 > 5 {
package main func main() { for i := 0; i < 30; i++ { if i <= 10 || i >= 20 { continue } if i%2 != 0 { continue } if i/3 <= 5 { continue } println(i) } }
package main func isEighteen(i int) bool { if i <= 10 || i >= 20 { return false } if i%2 != 0 { return false } if i/3 <= 5 { return false } return true } func main() { for i := 0; i < 30; i++ { if isEighteen(i) { println(i) } } }