Go言語のfor rangeの構造は何ですか?

青灯夜游
リリース: 2023-01-11 18:00:04
オリジナル
1810 人が閲覧しました

「for range」は Go 言語に固有の反復構造であり、配列、スライス、文字列、マップ、チャネルを走査するために使用できます。 「for range」の構文は foreach 構造に似ています。一般的な形式は「for key, val := range coll {...}」です。パラメータ val は常に、コレクションなので、通常は読み取り専用であり、これに加えられた変更はコレクション内の元の値には影響しません。

Go言語のfor rangeの構造は何ですか?

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

for range 構造は、Go 言語のユニークな反復構造です。多くの状況で非常に役立ちます。for range は、配列、スライス、文字列、マップ、チャネルを横断できます。for range 構文は次のとおりです。他の言語の foreach ステートメントと同様で、一般的な形式は次のとおりです:

for key, val := range coll {
    ...
}
ログイン後にコピー

val は常にコレクション内の対応するインデックスの値のコピーであるため、通常は読み取り専用であることに注意してください。変更を加えても、コレクション内の元の値には影響しません。文字列は Unicode でエンコードされた文字 (またはルーン) のコレクションであるため、文字列を反復するために使用することもできます。

for pos, char := range str {
    ...
}
ログイン後にコピー

各ルーン文字とインデックスは、for range ループ内で 1 対 1 に対応します。 、UTF-8 ルールに従って Unicode でエンコードされた文字を自動的に識別できます。

range の戻り値には特定のルールがあります。

  • 配列、スライス、文字列はインデックスと値を返します。

  • map はキーと値を返します。

  • Channel (チャネル) はチャネル内の値のみを返します。

配列とスライスの走査 - インデックスと値の取得

走査コードでは、キーと値はそれぞれスライスの添え字と添え字を表しますマークに対応する値。次のコードは、スライスを走査する方法を示しています。配列も同様の方法で走査されます:

for key, value := range []int{1, 2, 3, 4} {
    fmt.Printf("key:%d  value:%d\n", key, value)
}
ログイン後にコピー

コード出力は次のとおりです:

Go言語のfor rangeの構造は何ですか?

文字列のトラバーサル - 文字の取得

Go 言語は他の言語と似ています。範囲の組み合わせによって文字列をトラバースできます。トラバーサル中、キーと値は次の値を表しますそれぞれ文字列のインデックスと文字列。 内のすべての文字。

次のコードは、文字列を走査する方法を示しています:

var str = "hello 你好"
for key, value := range str {
    fmt.Printf("key:%d value:0x%x\n", key, value)
}
ログイン後にコピー

コード出力は次のとおりです:

Go言語のfor rangeの構造は何ですか?

コード、実際の型はルーン型で、それを16進数で表示するのが文字コードです。

マップのトラバース - マップのキーと値の取得

マップ タイプの場合、範囲をトラバースする場合、キーと値はインデックス キーのキーと値を表します。インデックスに対応する値は、ペアで現れるため、一般にマップのキーと値のペアと呼ばれます。次のコードは、マップを走査する方法を示しています。

m := map[string]int{
    "hello": 100,
    "world": 200,
}
for key, value := range m {
    fmt.Println(key, value)
}
ログイン後にコピー

コード出力は次のとおりです:

Go言語のfor rangeの構造は何ですか?

#注:

マップを移動するとき、キー値は次のように出力されます。順序付きのキーと値のペアの出力が必要な場合は、結果を並べ替える必要があります。

【関連する推奨事項: Go ビデオ チュートリアル プログラミング教育

以上がGo言語のfor rangeの構造は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート