golang のフロー制御ステートメントとは何ですか?
フロー制御ステートメント: 1. ブール式とそれに続く 1 つ以上のステートメントで構成される if ステートメント; 2. 「if...else」ステートメント、実行されるブール式の else の式は false です。 3. switch ステートメント、さまざまな条件に基づいてさまざまなアクションを実行するために使用されます; 4. select ステートメント、5. for ループ ステートメント、構文 "for k,v := range oldmap{newmap[k]=v}"; 6. ループ制御ステートメントは Break、Continue、Goto です。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Golang フロー制御ステートメントの基本的な内容を見てみましょう。
1. 条件分岐文
は C 言語に似ており、関連する条件文は次の表のとおりです。
説明 | |
---|---|
if ステートメントの構成ブール式の後に 1 つ以上のステートメントが続きます。 | |
オプションの else ステートメントは、if ステートメントの後に使用できます。ブール式が false の場合、else ステートメント内の式が実行されます。 | |
switch ステートメントは、さまざまな条件に基づいてさまざまなアクションを実行するために使用されます。 | |
select ステートメントは switch ステートメントに似ていますが、select は実行可能なケースをランダムに実行します。実行するケースがない場合は、実行するケースができるまでブロックされます。 |
- 構文は次のとおりです。
-
if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ }
ログイン後にコピー
if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } else { /* 在布尔表达式为 false 时执行 */ }
ログイン後にコピー
- 変数
v<span class="hljs-attribute"> は任意の型 (</span>val1
およびval2
) にすることができます。型の任意の値。型は定数や整数に限定されません。そうでない場合、最終結果は同じ型の式になります。switch v { case val1: ... case val2: ... default: ... }
ログイン後にコピー
- select は、通信に使用される switch ステートメントに似た、Go の制御構造です。各ケースは、送信または受信のいずれかの
- 通信操作
である必要があります。実行可能なケースをランダムに実行します。実行するケースがない場合は、実行するケースができるまでブロックされます。デフォルト句は常に実行可能である必要があります。select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
ログイン後にコピー
各ケースはコミュニケーションである必要があります
- すべてのチャネル式が評価され、すべて送信されます式が評価されます
- いずれかの通信が実行できればそれが実行され、その他は無視されます
- 実行可能な通信が複数ある場合、select はランダムに 1 つを選択します。 。
- ケースを実行できない場合: デフォルト句がある場合は、デフォルト句が実行され、特定の通信が実行できるようになるまで選択がブロックされるため、スタベーションの問題が回避されます。
#2. ループ文
2.1 ループ処理文 ほとんどの言語とは異なり、Go 言語のループ ステートメントは for キーワードのみをサポートし、while および do-while 構造をサポートしません。キーワード for の基本的な使用法は C 言語の使用法と非常に似ており、 C.
For は Go でループを実装するために使用されます。次の 3 つの形式があります: 構文 | |
---|---|
と同じですC 言語の場合と同様に、while は | |
および | |
for<span class="hljs-function"> と同じです(;;) C 言語の <span class="hljs-title"></span><span class="hljs-params">同じ </span></span>for{} |
for key, value := range oldmap { newmap[key] = value }
制御文
Continue | |
##goto ステートメント | #マークされたステートメントに制御が移ります |