如何通过通道阵列



我正试图将一个通道数组传递给方法"func Data(channel-chan<-[]Book(",但我遇到了一个错误,状态为(channel[0](类型chan<-[]Book不支持索引("(我理解它的含义,但没有方法传递数组吗?如果是,我有什么替代

func Data(channel chan<- []Book) {
var data EData
data = ReadJSONFile("Data.json")
go Writer(data.BookStores[0].Central, channel[0]) // at this 
// place I get "invalid operation:  channel[0] (type chan<- []Book 
// does not support indexing)"
}

传递Book元素通道切片的正确类型是:

[]chan<- Book

你最初的问题中的代码是针对一个图书切片频道的。

chan<- []Book需要变成[]chan<- Book[]在go中修改它后面的类型,所以如果你想要一个通道数组,就把它放在chan之前。

func Data(channel []chan<- Book) {
var data EData
data = ReadJSONFile("Data.json")
go Writer(data.BookStores[0].Central, channel[0])
// ...
}

测试:https://play.golang.org/p/sQt3VawvhoI

最新更新