781 Stimmen

Gibt es in Go eine foreach-Schleife?

Gibt es eine foreach Konstrukt in der Sprache Go? Kann ich über ein Slice oder Array iterieren, indem ich eine for ?

12voto

robstarbuck Punkte 4928

Sie können in der Tat verwenden range ohne Verweis auf seine Rückgabewerte durch Verwendung von for range gegen Ihren Typ:

arr := make([]uint8, 5)
i,j := 0,0
for range arr {
    fmt.Println("Array Loop", i)
    i++
}

for range "bytes" {
    fmt.Println("String Loop", j)
    j++
}

https://play.golang.org/p/XHrHLbJMEd

1voto

jpihl Punkte 7501

Dies mag offensichtlich sein, aber Sie können das Array wie folgt einbinden:

package main

import (
    "fmt"
)

func main() {
    for _, element := range [3]string{"a", "b", "c"} {
        fmt.Print(element)
    }
}

Ausgänge:

abc

https://play.golang.org/p/gkKgF3y5nmt

0voto

Jose78 Punkte 11

Ich habe diese Bibliothek gerade implementiert: https://github.com/jose78/go-collection .

Dies ist ein Beispiel für die Verwendung der Foreach Schleife:

package main

import (
    "fmt"

    col "github.com/jose78/go-collection/collections"
)

type user struct {
    name string
    age  int
    id   int
}

func main() {
    newList := col.ListType{user{"Alvaro", 6, 1}, user{"Sofia", 3, 2}}
    newList = append(newList, user{"Mon", 0, 3})

    newList.Foreach(simpleLoop)

    if err := newList.Foreach(simpleLoopWithError); err != nil{
        fmt.Printf("This error >>> %v <<< was produced", err )
    }
}

var simpleLoop col.FnForeachList = func(mapper interface{}, index int) {
    fmt.Printf("%d.- item:%v\n", index, mapper)
}

var simpleLoopWithError col.FnForeachList = func(mapper interface{}, index int) {
    if index > 1{
        panic(fmt.Sprintf("Error produced with index == %d\n", index))
    }
    fmt.Printf("%d.- item:%v\n", index, mapper)
}

Das Ergebnis dieser Ausführung sollte sein:

0.- item:{Alvaro 6 1}
1.- item:{Sofia 3 2}
2.- item:{Mon 0 3}
0.- item:{Alvaro 6 1}
1.- item:{Sofia 3 2}
Recovered in f Error produced with index == 2

ERROR: Error produced with index == 2
This error >>> Error produced with index == 2
 <<< was produced

Versuchen Sie diesen Code in playGrounD .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X