1 条件文の概要

条件文は、プログラミングにおけるプログラムの論理的な流れを制御するための重要なツールです。Golangでは、条件文は他のプログラミング言語と同様ですが、独自の特徴を持っています。これにより、条件文は真偽の条件に基づいてどのコードを実行するかを決定し、コードの柔軟性と保守性を大きく向上させます。

2 if文

2.1 if文の基本的な使い方

if文は、Go言語で最も基本的な条件文です。その構文は次のようになります:

if 条件 {
    // 条件が真のときに実行するコード
}

以下に簡単な例を示します:

package main

import "fmt"

func main() {
    x := 10
    if x > 5 {
        fmt.Println("xは5より大きい")
    }
}

このコードは、xが5より大きいかどうかを確認し、それが真であれば、印刷操作を行います。

2.2 条件式

条件式には比較演算子(例: ==, !=, <, >, <=, >=)と論理演算子(例: &&(AND)、||(OR)、!(NOT))が含まれます。

たとえば、変数が特定の範囲内にあるかどうかを確認するには:

y := 20
if y >= 10 && y <= 30 {
    fmt.Println("yは10から30の間にあります")
}

上記の条件式では、論理演算子&&を使用して、yの値が10から30の間にあることを確認しています。

2.3 if...elseおよびelse if構造

if条件が満たされない場合、代替のコードブロックを実行するためにelseを使用できます。else ifを使用すると、複数の条件をチェックすることができます。以下に例を示します:

score := 88

if score >= 90 {
    fmt.Println("素晴らしい")
} else if score >= 80 {
    fmt.Println("良い")
} else if score >= 70 {
    fmt.Println("平均")
} else {
    fmt.Println("平均以下")
}

このコードは、scoreの値に基づいて異なる評価を印刷します。

3 switch文

3.1 switchの基本構文

switch文は、複数の値を評価する必要がある場合に特に適した、より簡潔な条件分岐文です。switch文の基本的な構文は次のようになります:

switch 式 {
case 値1:
    // 値1に一致した場合に実行するコード
case 値2:
    // 値2に一致した場合に実行するコード
default:
    // デフォルトで実行するコード
}

の値がcaseに続く値と一致する場合、それぞれのコードブロックが実行されます。

3.2 switchのfallthrough

Goのswitch文では、fallthroughキーワードが使用されない限り、各ブランチは通常、次のケースにフォールスルーしません。

switch num {
case 1:
    fmt.Println("1")
    fallthrough
case 2:
    fmt.Println("2")
default:
    fmt.Println("1でも2でもありません")
}

上記のコードでは、numが1である場合、case 1に一致していても、fallthroughキーワードの存在により、プログラムはcase 2のコードを続けて実行し、"2"を印刷します。

3.3 型分岐とカスタム分岐

switch文は変数の型に基づいた分岐(型分岐)もサポートしており、より複雑なカスタム分岐条件を作成することもできます。

型分岐の例:

var i interface{} = 1

switch i.(type) {
case int:
    fmt.Println("iは整数です")
case float64:
    fmt.Println("iはfloat64です")
default:
    fmt.Println("iは他の型です")
}

必要に応じて、より複雑な条件判断を行うためにカスタム分岐条件を作成できます。

4 実践演習

このセクションでは、具体的な例を通じてGolangでの条件文の理解と応用を深めます。実践的なプログラミング課題を通じて、実世界の問題を解決するためにif文とswitch文をより熟練したものとします。

成績計算機

単純な成績計算機を作成しましょう。このプログラムは、ユーザーが入力した点数に基づいて対応する成績を決定し、出力します。成績評価基準は次の通りです。

  • 90点以上はA
  • 80点から89点はB
  • 70点から79点はC
  • 60点から69点はD
  • 60点未満はF

この機能を実装するために、if文またはswitch文のいずれかを使用できます。まず、if文を使用した例を見てみましょう。

package main

import (
	"fmt"
)

func main() {
	var score int
	fmt.Print("点数を入力してください:")
	fmt.Scan(&score)

	if score >= 90 {
		fmt.Println("成績: A")
	} else if score >= 80 {
		fmt.Println("成績: B")
	} else if score >= 70 {
		fmt.Println("成績: C")
	} else if score >= 60 {
		fmt.Println("成績: D")
	} else {
		fmt.Println("成績: F")
	}
}

このコードでは、まずscore変数を宣言してユーザーからの入力を受け取ります。その後、複数のifおよびelse if文を使用して、得点に対応する成績を決定し、fmt.Println関数を使用して成績を出力します。

次に、switch文を使用した例を見てみましょう。

package main

import (
	"fmt"
)

func main() {
	var score int
	fmt.Print("点数を入力してください:")
	fmt.Scan(&score)

	switch {
	case score >= 90:
		fmt.Println("成績: A")
	case score >= 80:
		fmt.Println("成績: B")
	case score >= 70:
		fmt.Println("成績: C")
	case score >= 60:
		fmt.Println("成績: D")
	default:
		fmt.Println("成績: F")
	}
}

switch文を使用した例では、コードの構造がより簡潔で明確です。連続したifおよびelse if文を使用する必要はありません。代わりに、switchの後にそれぞれのcaseで条件を直接指定します。前のcaseの条件に一致しない点数は自動的に次のcaseに移動し、対応する条件分岐に一致するか、defaultのケースに到達するまで続きます。その結果、Fの成績が出力されます。

if文とswitch文を使用して条件判定を行う方法を学びました。次は、独自のプログラムを作成し、実践して理解を深めてみてください。

次のセクションでは、Go言語で条件文を確実に使いこなすために役立つ実践的な問題を引き続き紹介します。

上記のコードは学習用です。実用的なアプリケーションで使用する場合は、ユーザーとのインタラクションやエラーハンドリングなどの要因を考慮して、より堅牢なものにする必要があります。