2014-01-17 12 views
5

チャネルの配列を使用するように割り当てられています。ゴラン。チャネルの配列

わかりません。なぜこれはうまくいかないのですか?

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

答えて

6

チャネルの配列を初期化しましたが、チャネル自体は初期化していません。

なぜデッドロックですか?これは、初期化されていないチャネル値、またはnilに設定されているチャネル値が常にブロックされるためです。 (articleを参照)

+0

ありがとうございます。何らかの理由で私はすべての要素も初期化すると思った –