いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-186 (forループで2つの変数を定義して使う)

概要

以下は自分用のメモです。よく忘れるので、ここにメモメモ。。

Goでたまに for ループで 2つの変数を定義してループさせたいときがあります。

他の言語だと、例えばこんな感じ。

for (int i = s.Length-1, j = 0; i >= 0; i--, j++)
{
}

これを、Goで同じように書いてもコンパイルエラーになります。

Goの場合は以下のように書きます。

package loops

import "github.com/devlights/gomy/output"

// ForLoopTwoVariable -- for ループで 2つの変数 を初期化してループさせるサンプルです.
//
// REFERENCES
//   - https://stackoverflow.com/questions/38081807/for-loop-of-two-variables-in-go
func ForLoopTwoVariable() error {
    var (
        s = "helloworld"
        r = make([]byte, len(s))
    )

    // for i:=len(s)-1, j:=0; i >= 0; i--,j++ ではないことに注意
    for i, j := len(s)-1, 0; i >= 0; i, j = i-1, j+1 {
        r[j] = s[i]
    }

    output.Stdoutl("[orig]", s)
    output.Stdoutl("[ret ]", string(r))

    return nil
}

i--,j++ と書けないのに注意。

参考情報

stackoverflow.com


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。