在 go 中使用地图通道

Using a channel of maps in go

我想通过 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。

谢谢

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

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

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

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

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