
Go言語のif文の書き方は、他のプログラミング言語と違いがありますか?
if文はGo言語だけでなく、あらゆるプログラミング言語で必要不可欠な制御構文です。
今回は、Go言語での基本的なif文と簡易文付きif文についてお伝えしていきます。
あと、if文を学習していく上で、演算子について理解していないといけません。
演算子の理解に不安がある方は、以下の記事で復習しておきましょう。
【Go言語のif(条件分岐)】基本的なif文
ここでは、Go言語のif文の基本を理解していきましょう。
if文の基本1:if
if文の最小構成で、条件式での結果が true
(合ってたら)の時のみ処理が実行され、false
(違ったら)の時は処理が実行されません。
// Go言語 if・else
package main
func main() {
if 条件式 {
// true(真)の時の処理
}
}
if文の基本2:if・else
if
else
の構成では、条件式の結果が true
の時はtrue
の処理を false
の時は false
の処理が実行されます。
// Go言語 if・else
package main
func main() {
if 条件式 {
// true(真)の時の処理
} else {
// false(偽)の時の処理
}
}
上記のコードを参考に実際に簡単なプログラムを書いてみます。
// Go言語 if・else
package main
import "fmt"
func main() {
var a int = 2
// 条件式はaの値が2だったらtrue(真)
if a == 2 {
// true(真)の時の処理
fmt.Println("aの値は2です")
} else {
// false(偽)の時の処理
fmt.Println("2以外です")
}
}
// 出力結果
go run main.go
aの値は2です
変数a
の値は 2
でif文の条件式は a == 2
なので true
になり、true時の処理が実行され「aの値は2です」という出力結果になりました。
ですから、変数aの値が2以外だと false
になり、false時の処理が実行され「2以外です」という出力結果になります。

実際に変数aの値を変えてコードを書き、出力結果を確認してみましょう。
if文の基本3:if・else if・else
if
else if
else
の構成では、条件式の結果が true
の時はtrue
の処理を false
の時は false
の処理が実行されます。
ですが、もし一回目の結果が false
でも、次の else if
の条件式の結果が true
ならば、 else if
で設定した処理が実行されます。
// Go言語 if・else if・else
package main
func main() {
if 条件式 {
// true(真)の時の処理
} else if 条件式 {
// 最初の条件式がfalseでもelse if 条件式がtrueなら
// true(真)の時の処理
} else {
// false(偽)の時の処理
}
}
では、プログラムで確認していきましょう。
// Go言語 if・else if・else
package main
import "fmt"
func main() {
var a int = 1
if a == 2 {
fmt.Println("2です")
} else if a == 1 {
fmt.Println("1です")
} else {
fmt.Println("1と2以外です")
}
}
// 出力結果
go run main.go
1です
変数a
の値は 1
で一回目のif文の条件式は a == 2
なので false
になり処理が実行されません。
次に else if
の条件式は a == 1
なので true
になり処理が実行され、 1です と出力されます。
if文の基本4:else ifは何回でも使えます
else if
は何回も使うことができます。
プログラムで確認してみましょう。
// Go言語 else ifを2回使ってみる
package main
import "fmt"
func main() {
var a int = 2
if a == 3 {
fmt.Println("3です")
} else if a == 2 {
fmt.Println("2です")
} else if a == 1 {
fmt.Println("1です")
} else {
fmt.Println("1と2と3以外です")
}
}
// 出力結果
go run main.go
2です
else if
は複数回使用できます。

else if
は、できるだけ多く使用するのは避け、状況に応じてswitch文を使うことも考えましょう。
if文の基本5:if文での注意点
if文でプログラミング初心者が混乱する注意点があります。
まずは、プログラムを見てください。
// if文での注意点
package main
import "fmt"
func main() {
num := 6
if num % 2 == 0 {
fmt.Println("2で割り切れます")
} else if num % 3 == 0 {
fmt.Println("3で割り切れます")
} else {
fmt.Println("2でも3でも割り切れません")
}
}
// 出力結果
go run main.go
2で割り切れます
変数numには 6
が代入されています。
if文の条件式を確認すると num % 2 == 0
(2で割った余りが0)と num % 3 == 0
(3で割った余りが0)があります。
変数numに代入されている値の 6
は2でも3でも割り切れます。
だけど、出力結果は「2で割り切れます」だけ。
if文では最初の処理が実行されるるとif文からは抜けてしまいます。

ここが else if
を複数使用した時の混乱ポイントですよ。
【Go言語のif(条件分岐)】簡易文付きif文
Go言語では簡易文付きif文という、if文をシンプルにする記述方法があります。
// 簡易文付きif文
if 変数名 := 値; 条件式 {
// trueなら処理する
}
簡易文付きif文をプログラムで確認していきましょう。
// 簡易文付きif文の例
package main
import "fmt"
func main() {
if b := 100; b == 100 {
fmt.Println("100です。")
}
}
// 出力結果
go run main.go
100です。

このプログラムは当たり前すぎませんか?
では、if文を関数とセットで使用してみましょう。
// 簡易文付きif文関数を利用
package main
import "fmt"
// if文検証用関数
func mul(num int) string {
if num%2 == 0 {
return "2の倍数です"
} else {
return "2の倍数ではありません"
}
}
func main() {
// 関数を利用した基本的なif文
result := mul(10)
if result == "2の倍数です" {
fmt.Println("2の倍数を確認しました。")
}
// 関数を利用した簡易文付きif文
if result2 := mul(10); result2 == "2の倍数です" {
fmt.Println("2の倍数を確認しました。")
}
}
// 出力結果
go run main.go
2の倍数を確認しました。
2の倍数を確認しました。
簡易文付きif文でプログラムが1行削減されました。
ただ、これだけだと簡易文付きif文を使う違いがわかりません。
簡易文付きif文の注意点
基本的なif文と簡易文付きif文の違いは「変数」の扱いです。
簡易付きif文の簡易文に設定している変数は、簡易文付きif文の中だけで使用できる。
では、プログラムで確認してみましょう。
// if文
package main
import "fmt"
// if文検証用関数
func mul(num int) string {
if num%2 == 0 {
return "2の倍数です"
} else {
return "2の倍数ではありません"
}
}
func main() {
// 関数を利用した基本的なif文
result := mul(10)
if result == "2の倍数です" {
fmt.Println("2の倍数を確認しました。")
}
fmt.Println(result)
}
// 出力結果
go run main.go
2の倍数を確認しました。
2の倍数です
if文のブロック {}
の外でも出力されているのが確認できます。
では、簡易文付きif文ではどうでしょう。
// 簡易文付きif文関数を利用
package main
import "fmt"
// if文検証用関数
func mul(num int) string {
if num%2 == 0 {
return "2の倍数です"
} else {
return "2の倍数ではありません"
}
}
func main() {
// 関数を利用した簡易文付きif文
if result2 := mul(10); result2 == "2の倍数です" {
fmt.Println("2の倍数を確認しました。")
}
fmt.Println(result2)
}
// 出力結果
go run main.go
$ go run main.go
# command-line-arguments
./main.go:64:17: undefined: result2
「result2が定義されていません」というエラーになります。
if文で条件分岐をチェックするだけの変数であれば、簡易文付きif文を利用して他から参照されないようにすることができます。
【まとめ】Go言語のif文
それでは、Go言語のif文についてまとめてみましょう。
Go言語の基本的なif文の構成
// Go言語 if文の基本構成
package main
func main() {
if 条件式 {
// true(真)の時の処理
} else if 条件式 {
// 最初の条件式がfalseでもelse if 条件式がtrueなら
// true(真)の時の処理
} else {
// false(偽)の時の処理
}
}
Go言語特有の簡易文付きif文の構成
// 簡易文付きif文
if 変数名 := 値; 条件式 {
// trueなら処理する
}
Go言語のif文で押さえておくポイント
if文は、Go言語に限らず他のプログラミング言語でも扱われる制御構文です。
プログラミング言語ごとに記述方法の違いはありますが概念は同じです。
if文はプログラミングで多く使用される制御構文なので、この機会にしっかりと理解しておきましょう。
comment