ホームページ  >  記事  >  バックエンド開発  >  golang のフロー制御ステートメントとは何ですか?

golang のフロー制御ステートメントとは何ですか?

青灯夜游
青灯夜游オリジナル
2022-12-28 17:58:284155ブラウズ

フロー制御ステートメント: 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 です。

golang のフロー制御ステートメントとは何ですか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Golang フロー制御ステートメントの基本的な内容を見てみましょう。

1. 条件分岐文

は C 言語に似ており、関連する条件文は次の表のとおりです。

#ステートメント説明if ステートメント if ステートメントの構成ブール式の後に 1 つ以上のステートメントが続きます。 if…else ステートメント オプションの else ステートメントは、if ステートメントの後に使用できます。ブール式が false の場合、else ステートメント内の式が実行されます。 switch ステートメント switch ステートメントは、さまざまな条件に基づいてさまざまなアクションを実行するために使用されます。 select ステートメント select ステートメントは switch ステートメントに似ていますが、select は実行可能なケースをランダムに実行します。実行するケースがない場合は、実行するケースができるまでブロックされます。
#if ステートメント
    構文は次のとおりです。

  • if 布尔表达式 {
       /* 在布尔表达式为 true 时执行 */
    }
if-else ステートメント
  • if 布尔表达式 {
       /* 在布尔表达式为 true 时执行 */
    } else {
    	/* 在布尔表达式为 false 时执行 */
    }
switch ステートメント
    変数

  • v<span class="hljs-attribute"> は任意の型 (</span>val1 および val2) にすることができます。型の任意の値。型は定数や整数に限定されません。そうでない場合、最終結果は同じ型の式になります。
    switch v {
        case val1:
            ...
        case val2:
            ...
        default:
            ...
    }
select ステートメント
    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 言語の for init;condition;post {} と同じですC 言語の場合と同様に、while は for 条件{} および さらに、for ループは次のようにすることもできます。直接使用されますrange
構文
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
}

##2.2 ループ制御ステートメント

制御文詳細説明breakループまたは switch ステートメントを中断します現在のループの残りのステートメントをスキップし、ループの次のラウンドを続行します##goto ステートメント #マークされたステートメントに制御が移ります

1、break

break主要用于循环语句跳出循环,和c语言中的使用方式是相同的。且在多重循环的时候还可以使用label标出想要break的循环。
实例代码如下:

a := 0
for a<5 {
	fmt.Printf("%d\n", a)
	a++
	if a==2 {
		break;
	}
}
/* output
0
1
2
*/

2、continue

Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。在多重循环中,可以用标号 label 标出想 continue 的循环。
实例代码如下:

    // 不使用标记
    fmt.Println("---- continue ---- ")
    for i := 1; i <= 3; i++ {
        fmt.Printf("i: %d\n", i)
            for i2 := 11; i2 <= 13; i2++ {
                fmt.Printf("i2: %d\n", i2)
                continue
            }
    }

/* output
i: 1
i2: 11
i2: 12
i2: 13
i: 2
i2: 11
i2: 12
i2: 13
i: 3
i2: 11
i2: 12
i2: 13
*/

    // 使用标记
    fmt.Println("---- continue label ----")
    re:
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d", i)
                for i2 := 11; i2 <= 13; i2++ {
                    fmt.Printf("i2: %d\n", i2)
                    continue re
                }
        }

/* output
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
*/

3、goto

goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
示例代码如下:

var a int = 0
LOOP: for a<5 {
	if a == 2 {
		a = a+1
		goto LOOP
	}
	fmt.Printf("%d\n", a)
	a++
}

/*
output:
0
1
2
3
4
*/

以上代码中的LOOP就是一个标签,当运行到goto语句的时候,此时执行流就会跳转到LOOP标志的哪一行上。

【相关推荐:Go视频教程编程教学

Continue

以上がgolang のフロー制御ステートメントとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。