【问题标题】:Using a channel of maps in go在 go 中使用地图通道
【发布时间】:2018-05-29 13:53:59
【问题描述】:

我想通过 go 中的通道传递地图:

func main() {
    var pipe map[string]string
    pipe = make(chan map[string]string, 2)
    go connect("myhost", "100", pipe)
    out := <-pipe
...}

以便 func() 通过通道传递响应和错误:

func connect(host string, url string, pipe chan<- map[string]string) {
    fmt.Println("Trying "+url)
    var lpipe map[string]string
    lpipe = make(map[string]string)
    lpipe["resp"], lpipe["err"] = "aaa","bbb"
    pipe <- lpipe
}

编译器同时拒绝

    pipe = make(chan map[string]string, 2)
:cannot use make(chan map[string]string, 2) (type chan map[string]string) as type map[string]string in assignment

    pipe = make(chan map, 2)
:unexpected comma, expecting [

我做错了什么?整个事情是为了被并行化到 goroutines 中。

谢谢

【问题讨论】:

    标签: dictionary go channel


    【解决方案1】:

    错误消息准确地告诉您您做错了什么:您正在尝试将 chan map[string]string 类型的值分配给 map[string]string 类型的变量:

    var pipe map[string]string
    pipe = make(chan map[string]string, 2)
    

    在这里,您正在创建一个名为 pipe 的变量,其类型为 map[string]string,然后在第二行,您正在创建一个通道(类型为 chan map[string]string)并尝试将其分配给该变量。这行不通。

    您在第二个代码示例中做同样的事情。

    map[string]stringchan map[string]string 是不同的类型。

    【讨论】:

    • 谢谢,对于这个公认的微不足道的问题,我们深表歉意。
    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 2016-06-25
    • 1970-01-01
    • 2013-01-28
    • 2016-08-09
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多