如何通过通道数组

时间:2018-11-20 19:27:23

标签: go

我正在尝试将通道数组传递给方法“ 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)"
        }

2 个答案:

答案 0 :(得分:2)

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

[]chan<- Book

您原始问题中的代码是用于“书籍切片”的渠道。

答案 1 :(得分:1)

chan<- []Book必须成为[]chan<- Book[]修改输入后的类型,因此,如果要使用通道数组,请将其放在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