在 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)
在这里你创建了一个名为 pipe
的 map[string]string
类型的变量,然后在第二行,你创建了一个通道(chan map[string]string
类型)并尝试将其分配给该变量。那不行。
您在第二个代码示例中做同样的事情。
map[string]string
和 chan map[string]string
是不同的类型。
我想通过 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)
在这里你创建了一个名为 pipe
的 map[string]string
类型的变量,然后在第二行,你创建了一个通道(chan map[string]string
类型)并尝试将其分配给该变量。那不行。
您在第二个代码示例中做同样的事情。
map[string]string
和 chan map[string]string
是不同的类型。