2014-01-17 4 views
5

Ich habe eine Zuweisung Kanäle von Kanälen zu verwenden.Golang. Array von Kanälen

Ich verstehe nicht. Warum funktioniert das nicht?

package main 

import "fmt" 

func run() { 
    chann[0] <- 1 
} 

var chann = make([]chan int, 2) 

func main() { 
    go run() 
    obj := <- chann[0] 
    fmt.Println(obj) 
} 

Antwort

6

Sie haben das Array der Kanäle initialisiert, aber nicht die Kanäle selbst.

Warum es blockiert; Dies liegt daran, dass ein Kanalwert, der nicht initialisiert oder auf Null gesetzt wurde, immer blockiert. (Siehe hierzu article)

+0

Vielen Dank. Aus irgendeinem Grund habe ich gedacht, alle Elemente zu initialisieren –

Verwandte Themen