В golang, как итерации двух массивов, используя один "диапазон"

Мы можем использовать

for _, x := range []int{1, 2, 3} {
  // do something
}

Итерировать массив.

Как я могу одновременно итерации двух массивов?

Есть ли что-то вроде следующего в python?

for x, y in range([1, 2, 3], [4, 5, 6]):
    print x, y

Ответы

Ответ 1

Вы не можете, но если они имеют одинаковую длину, вы можете использовать индекс из range.

package main

import (
    "fmt"
)

func main() {
    r1 := []int{1, 2, 3}
    r2 := []int{11, 21, 31}

    for i, _ := range r1 {
        fmt.Println(r1[i])
        fmt.Println(r2[i])
    }
}

Он возвращает

1
11
2
21
3
31

Ответ 2

Если ваши фрагменты имеют одинаковую длину, используйте range следующим образом:

for i := range x {
    fmt.Println(x[i], y[i])
}

Ответ 3

Вы можете сделать это за счет создания нового массива (который может или не может быть для вас нарушением транзакции)

for _, i := range append([]int{1, 2, 3}, []int{4, 5, 6, 7}...) {
    fmt.Printf("%v\n", i)
}

Обратите внимание, что он работает с различными массивами длины. См. https://play.golang.org/p/DRCI_CwSjA для примера игровой площадки.