if文をGo言語のプログラムコードでゆっくり理解しよう!

Go言語
この記事は約10分で読めます。
Go初学者
Go初学者

Go言語のif文の書き方は、他のプログラミング言語と違いがありますか?

この記事ではGo言語のif文について理解できます!
  • Go言語での基本的なif文の書き方について
  • Go言語の特徴的な簡易文付きif文について
  • 簡易文付きif文で注意しなければいけないこと

if文はGo言語だけでなく、あらゆるプログラミング言語で必要不可欠な制御構文です。

今回は、Go言語での基本的なif文と簡易文付きif文についてお伝えしていきます。

あと、if文を学習していく上で、演算子について理解していないといけません。

演算子の理解に不安がある方は、以下の記事で復習しておきましょう。

もりぴ
この記事を書いた人

XHTML1.0時代にHTML&CSSを勉強した経験あり。無趣味だった私が2020年5月からプログラミング学習を開始し現在も挫折せずに趣味で学習を楽しんでいる51歳。プログラミングの楽しさをブログを通してお伝えしていきます。

もりぴをフォローする

【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です。
Go初学者
Go初学者

このプログラムは当たり前すぎませんか?

では、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文の違いは「変数」の扱いです。

POINT

簡易付き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文で押さえておくポイント

Go言語のif文で知っておくこと!
  • if文では最初の処理が実行されるるとif文からは抜けてしまう。
  • 簡易付きif文の簡易文に設定している変数は、簡易文付きif文の中だけで使用できる。

if文は、Go言語に限らず他のプログラミング言語でも扱われる制御構文です。

プログラミング言語ごとに記述方法の違いはありますが概念は同じです。

if文はプログラミングで多く使用される制御構文なので、この機会にしっかりと理解しておきましょう。

comment

タイトルとURLをコピーしました