2015-01-20 12 views
15

WirIn golang, wie zwei Arrays ein iterieren mit `range`

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

eines Arrays durchlaufen können.

Wie kann ich zwei Arrays gleichzeitig iterieren?

Gibt es in Python so etwas wie folgt?

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

Sie können nicht. Etwas Programmierung wird benötigt. – Volker

+1

Anerkannt, wenn erklären kann, warum geben Sie mir einen Downvote – waitingkuo

+2

Sind Ihre Scheiben gleiche Länge? Wenn ja, können Sie für beide den von 'range' zurückgegebenen Index verwenden. –

Antwort

19

Sie können nicht, aber wenn sie die gleiche Länge haben können Sie den Index von range verwenden.

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]) 
    } 
} 

Es gibt

1 
11 
2 
21 
3 
31 
+0

Es ist hilfreich, danke – waitingkuo

8

Wenn Ihre Scheiben die gleiche Länge haben, range wie folgt verwenden:

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

Danke, es löst mein Problem – waitingkuo

1

Sie dies tun können, um die Kosten eines neuen Arrays zu schaffen (was für Sie ein Deal Breaker sein kann oder nicht)

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

Beachten Sie, dass es mit Arrays unterschiedlicher Länge funktioniert. Ein Beispiel für einen Spielplatz finden Sie unter https://play.golang.org/p/DRCI_CwSjA.