前書き

条件ステートメントは、すべてのプログラミング言語の一部です。 条件付きステートメントを使用すると、その時点のプログラムの条件に応じて、実行される場合と実行されない場合があるコードを作成できます。

プログラムの各ステートメントを完全に実行するとき、特定の条件を評価するようにプログラムに要求するわけではありません。 条件付きステートメントを使用することにより、プログラムは特定の条件が満たされているかどうかを判断し、次に何をすべきかを通知できます。

条件ステートメントを使用するいくつかの例を見てみましょう。

  • 学生がテストで65%以上を受け取った場合、成績が合格したことを報告します。そうでない場合は、彼女の成績が不合格であることを報告します。

  • 口座にお金がある場合は、利息を計算します。そうでない場合は、罰金を請求します。

  • 10個以上のオレンジを購入する場合、5%の割引を計算します。彼らがより少なく買うなら、しないでください。

条件を評価し、それらの条件が満たされているかどうかに基づいて実行するコードを割り当てることにより、条件付きコードを作成しています。

このチュートリアルでは、Goプログラミング言語で条件ステートメントを記述します。

Ifステートメント

ステートメントが真か偽かを評価し、ステートメントが真の場合にのみコードを実行する、 `+ if +`ステートメントから始めます。

プレーンテキストエディターでファイルを開き、次のコードを記述します。

grade.go

package main

import "fmt"

func main() {
   grade := 70

   if grade >= 65 {
       fmt.Println("Passing grade")
   }
}

このコードでは、変数 + grade +`があり、整数値 `+ 70 +`を与えています。 次に、 `+ if +`ステートメントを使用して、変数gradeが `+ 65 +`以上( `+> = +)かどうかを評価します。 この条件を満たしている場合、https://www.digitalocean.com/community/tutorials/an-introduction-to-working-with-strings-in-go [string] `合格 `。

プログラムを「+ grade.go 」として保存し、https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-forで実行します-go [ターミナルウィンドウからのローカルプログラミング環境]コマンド ` go run grade.go +`。

この場合、70の成績は65以上であるという条件を満たすため、プログラムを実行すると次の出力が表示されます。

OutputPassing grade

`+ grade `変数の値を ` 60 +`に変更して、このプログラムの結果を変更しましょう。

grade.go

package main

import "fmt"

func main() {
   grade :=

   if grade >= 65 {
       fmt.Println("Passing grade")
   }
}

_this_コードを保存して実行すると、条件が満たされていないため、プログラムに別のステートメントを実行するように指示しなかったため、出力を受け取りません。

もう1つの例を挙げると、銀行口座の残高が0未満かどうかを計算してみましょう。 `+ account.go +`というファイルを作成して、次のプログラムを作成しましょう。

account.go

package main

import "fmt"

func main() {
   balance := -5

   if balance < 0 {
       fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.")
   }
}

`+ go run account.go +`でプログラムを実行すると、次の出力が表示されます。

OutputBalance is below 0, add funds now or you will be charged a penalty.

プログラムでは、変数 + balance +`を0より小さい `+ -5 +`の値で初期化しました。 残高が `+ if +`ステートメントの条件を満たしているため( `+ balance <0 +)、コードを保存して実行すると、文字列出力を受け取ります。 繰り返しますが、残高を0または正の数に変更すると、出力を受け取りません。

その他の声明

`+ if +`ステートメントがfalseと評価された場合でも、プログラムに何かをさせたいと思うでしょう。 成績の例では、成績が合格か不合格かを出力する必要があります。

これを行うには、次のように構築された上記の成績条件に `+ else +`ステートメントを追加します。

grade.go

package main

import "fmt"

func main() {
   grade := 60

   if grade >= 65 {
       fmt.Println("Passing grade")
   } else {
       fmt.Println("Failing grade")
   }
}

grade変数の値は `+ 60 `であるため、 ` if `ステートメントはfalseと評価されるため、プログラムは ` Passing grade `を出力しません。 続く ` else +`ステートメントは、プログラムにとにかく何かをするように指示します。

プログラムを保存して実行すると、次の出力が表示されます。

OutputFailing grade

その後、グレードに「65」以上の値を与えるようにプログラムを書き換えると、代わりに出力「+ Passing grade +」を受け取ります。

銀行口座の例に「+ else +」ステートメントを追加するには、次のようにコードを書き直します。

account.go

package main

import "fmt"

func main() {
   balance := 522

   if balance < 0 {
       fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.")
   } else {
       fmt.Println("Your balance is 0 or above.")
   }
}
OutputYour balance is 0 or above.

ここでは、 `+ else `ステートメントが出力されるように、 ` balance `変数の値を正の数に変更しました。 印刷する最初の ` if +`ステートメントを取得するために、値を負の数に書き換えることができます。

`+ if `ステートメントを ` else `ステートメントと組み合わせることにより、2つの部分からなる条件ステートメントを作成し、 ` if +`条件が満たされるかどうかにかかわらず、特定のコードを実行するようコンピューターに指示します。

Else ifステートメント

これまでのところ、条件文に対してhttps://www.digitalocean.com/community/tutorials/understanding-boolean-logic-in-go[Boolean]オプションを提示しました。各 `+ if `文はtrueまたは偽。 多くの場合、2つ以上の可能な結果を​​評価するプログラムが必要になります。 このために、Goで ` else if `として記述された* else if *ステートメントを使用します。 ` else if `またはelse ifステートメントは ` if +`ステートメントのように見え、別の条件を評価します。

銀行口座プログラムでは、3つの異なる状況に対して3つの個別の出力が必要になる場合があります。

  • 残高が0未満です

  • 残高は0に等しい

  • 残高が0を超えています

`+ else if `ステートメントは、次のように ` if `ステートメントと ` else +`ステートメントの間に配置されます。

account.go

package main

import "fmt"

func main() {
   balance := 522

   if balance < 0 {
       fmt.Println("Balance is below 0, add funds now or you will be charged a penalty.")
   } else if balance == 0 {
       fmt.Println("Balance is equal to 0, add funds soon.")
   } else {
       fmt.Println("Your balance is 0 or above.")
   }
}

現在、プログラムを実行すると発生する可能性のある3つの出力があります。

  • 変数 + balance +`が `+ 0 +`に等しい場合、 `+ else if +`ステートメントから出力を受け取ります( `+ Balanceは0に等しい、すぐに資金を追加します。+

  • 変数 + balance +`が正の数に設定されている場合、 `+ else +`ステートメントから出力を受け取ります( `+ Your balance is 0 or above。+)。

  • 変数「+ balance 」が負の数に設定されている場合、出力は「 if 」ステートメントからの文字列になります(「 Balanceは0未満です。今すぐ資金を追加するか、ペナルティが課されます+」)。

しかし、3つ以上の可能性を持ちたい場合はどうでしょうか? これを行うには、コードに複数の `+ else if +`ステートメントを記述します。

`+ grade.go +`プログラムで、数値のグレードの範囲に対応する文字のグレードがいくつかあるようにコードを書き直しましょう:

  • 90以上はAグレードに相当

  • 80-89はBグレードと同等です

  • 70-79はCグレードと同等です

  • 65-69はDグレードと同等です

  • 64以下はFグレードと同等です

このコードを実行するには、1つの「+ if 」ステートメント、3つの「 else if」ステートメント、および失敗したすべてのケースを処理する「+ else」ステートメントが必要です。

上記の例のコードを書き直して、各文字の評点を印刷する文字列を作成しましょう。 `+ else +`ステートメントを同じに保つことができます。

grade.go

package main

import "fmt"

func main() {
   grade := 60

   if grade >= 90 {
       fmt.Println("A grade")
   } else if grade >= 80 {
       fmt.Println("B grade")
   } else if grade >= 70 {
       fmt.Println("C grade")
   } else if grade >= 65 {
       fmt.Println("D grade")
   } else {
       fmt.Println("Failing grade")
   }
}

`+ else if +`ステートメントは順番に評価されるので、ステートメントをかなり基本的に保つことができます。 このプログラムは次の手順を完了しています。

  1. 評点が90を超える場合、プログラムは `+ A grade +`を出力し、評点が90を下回る場合、プログラムは次のステートメントに進みます…

  2. グレードが80以上の場合、プログラムは `+ B grade +`を出力します。グレードが79以下の場合、プログラムは次のステートメントに進みます…

  3. グレードが70以上の場合、プログラムは `+ C grade +`を出力します。グレードが69以下の場合、プログラムは次のステートメントに進みます…

  4. グレードが65以上の場合、プログラムは `+ D grade +`を出力します。グレードが64以下の場合、プログラムは次のステートメントに進みます…

  5. 上記の条件がすべて満たされていないため、プログラムは「+ Failing grade +」を出力します。

ネストされたIfステートメント

「+ if」、「+ else if」、および「+ else」ステートメントに慣れたら、ネストされた条件ステートメントに進むことができます。 最初の条件がtrueとして実行された場合に2次条件をチェックしたい状況では、ネストされた `+ if`ステートメントを使用できます。 このために、if-elseステートメントを別のif-elseステートメント内に含めることができます。 ネストされた `+ if +`ステートメントの構文を見てみましょう:

if statement1 { // outer if statement
   fmt.Println("true")

   if nested_statement { // nested if statement
       fmt.Println("yes")
   } else { // nested else statement
       fmt.Println("no")
   }

} else { // outer else statement
   fmt.Println("false")
}

このコードからいくつかの可能な出力が得られます。

  • `+ statement1 `がtrueと評価される場合、プログラムは ` nested_statement +`もtrueと評価されるかどうかを評価します。 両方の場合に当てはまる場合、出力は次のようになります。

_ _

Outputtrue
yes

_ _

  • ただし、 `+ statement1 `がtrueと評価され、 ` nested_statement +`がfalseと評価される場合、出力は次のようになります。

_ _

Outputtrue
no

_ _

  • そして、 `+ statement1 `がfalseと評価された場合、ネストされたif-elseステートメントは実行されないため、 ` else +`ステートメントは単独で実行され、出力は次のようになります。

_ _

Outputfalse

_ _

コード全体に複数の `+ if +`ステートメントをネストすることもできます。

if statement1 { // outer if
   fmt.Println("hello world")

   if nested_statement1 { // first nested if
       fmt.Println("yes")

   } else if nested_statement2 { // first nested else if
       fmt.Println("maybe")

   } else { // first nested else
       fmt.Println("no")
   }

} else if statement2 { // outer else if
   fmt.Println("hello galaxy")

   if nested_statement3 { // second nested if
       fmt.Println("yes")
   } else if nested_statement4 { // second nested else if
       fmt.Println("maybe")
   } else { // second nested else
       fmt.Println("no")
   }

} else { // outer else
   statement("hello universe")
}

このコードでは、「+ else if 」ステートメントに加えて、各「 if」ステートメント内にネストされた「+ if」ステートメントがあります。 これにより、各条件内でより多くのオプションが可能になります。

`+ grade.go `プログラムでネストされた ` if `ステートメントの例を見てみましょう。 等級が最初に合格しているかどうか(65%以上)を確認してから、数値の等級がどの文字の等級に相当するかを評価できます。 ただし、成績が合格していない場合は、レターの成績を確認する必要はなく、代わりに成績が不合格であるとプログラムに報告させることができます。 ネストされた ` if +`ステートメントで修正されたコードは次のようになります。

grade.go

package main

import "fmt"

func main() {
   grade := 92
   if grade >= 65 {
       fmt.Print("Passing grade of: ")

       if grade >= 90 {
           fmt.Println("A")

       } else if grade >= 80 {
           fmt.Println("B")

       } else if grade >= 70 {
           fmt.Println("C")

       } else if grade >= 65 {
           fmt.Println("D")
       }

   } else {
       fmt.Println("Failing grade")
   }
}

変数 `+ grade `を整数値 ` 92 `に設定してコードを実行すると、最初の条件が満たされ、プログラムは ` Passing grade of:`を出力します。 次に、グレードが90以上かどうかを確認し、この条件も満たされているため、「 A +」を出力します。

`+ grade `変数を ` 60 `に設定してコードを実行すると、最初の条件が満たされないため、プログラムはネストされた ` if `ステートメントをスキップして、 ` else `ステートメントに移動します、プログラムが ` Failing grade +`を出力します。

もちろん、これにさらにオプションを追加し、ネストされたifステートメントの2番目のレイヤーを使用できます。 おそらく、A +、A、A-のグレードを個別に評価したいと思うでしょう。 そのためには、まず成績が合格かどうかを確認し、次に成績が90以上かどうかを確認し、次にA +の成績が96を超えているかどうかを確認します。

grade.go

...
if grade >= 65 {
   fmt.Print("Passing grade of: ")

   if grade >= 90 {
       if grade > 96 {
           fmt.Println("A+")

       } else if grade > 93 && grade <= 96 {
           fmt.Println("A")

       } else {
           fmt.Println("A-")
       }
...

このコードでは、 `+ grade `変数を ` 96 +`に設定すると、プログラムは次を実行します。

  1. グレードが65以上かどうかを確認します(true)

  2. 「+ Passing grade of:+」を出力します

  3. グレードが90以上かどうかを確認します(true)

  4. グレードが96より大きいかどうかを確認します(false)

  5. グレードが93より大きく、96以下であるかどうかを確認します(true)

  6. `+ A +`を印刷

  7. これらのネストされた条件ステートメントを残し、残りのコードを続行します

したがって、等級96のプログラムの出力は次のようになります。

OutputPassing grade of: A

ネストされた「+ if」ステートメントは、コードに特定のレベルの条件を追加する機会を提供します。

結論

`+ if +`ステートメントのような条件ステートメントを使用することにより、プログラムの実行をより詳細に制御できます。 条件ステートメントは、特定の条件が満たされているかどうかを評価するようにプログラムに指示します。 条件が満たされると、特定のコードが実行されますが、条件が満たされない場合、プログラムは他のコードに移動し続けます。

条件付きステートメントの練習を続けるには、異なるhttps://www.digitalocean.com/community/tutorials/how-to-do-math-in-go-with-operators[operators]を使用して、条件付きステートメントをよりよく理解してください。