在golang中,如何使用一个`range`迭代两个数组

wai*_*kuo 18 range go

我们可以用

for _, x := range []int{1, 2, 3} {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

迭代一个数组.

如何同时迭代两个数组?

在python中有类似跟随的东西吗?

for x, y in range([1, 2, 3], [4, 5, 6]):
    print x, y
Run Code Online (Sandbox Code Playgroud)

Sim*_*tti 25

你不能,但如果长度相同,你可以使用索引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])
    }
}
Run Code Online (Sandbox Code Playgroud)

它回来了

1
11
2
21
3
31
Run Code Online (Sandbox Code Playgroud)

  • 不需要指定`_`。仅使用:`for i:= range r1 {...}` (2认同)

Ain*_*r-G 9

如果您的切片长度相同,请使用range如下:

for i := range x {
    fmt.Println(x[i], y[i])
}
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以这样做,但代价是创建一个新数组(这可能会或可能不会破坏您的交易)

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

请注意,它适用于不同长度的数组。有关游乐场示例,请参阅https://play.golang.org/p/DRCI_CwSjA 。