2016-12-22 2 views
0

Test Codes unter:golang Schließraste falscher Wert von Bereich

func main() { 
    lans := [5]string{"java", "python", "erlang", "cpp", "go"} 
    fin := make(chan bool) 
    for _, l := range(lans) { 
     go func() { 
      fmt.Println(l) 
      }() 
    } 
    <- fin 
} 

ich denke, die ausgegeben werden: Java, Python, erlang, CPP, gehen; aber die Ausgabe ist: gehen gehen gehen gehen; was ist hier falsch?

+0

https://golang.org/doc/faq#closures_and_goroutines – JimB

Antwort

2

nur die Funktion so schreiben,

das Verb l in Funktion zu fangen
go func(l string) { 
    fmt.Println(l) 
}(l) 
+0

Dank, es funktioniert. – wgwigw