Golang。渠道地图

时间:2017-02-24 16:15:52

标签: dictionary go channel

我想根据字符串索引某些频道。我正在使用地图,但它不允许我为其分配频道。我一直在“恐慌:分配到零地图”,我错过了什么?

jQuery("#loginButton").click(function(e){
    e.preventDefault();
    jQuery.ajax({type: "POST",
        dataType: "json",
        crossDomain: true,
        xhrFields: {
            withCredentials: true
        },
        url: "http://example.com/wp-admin/admin-ajax.php?action=login",
        data: {
            log: jQuery("#username").val(), pwd: jQuery("#password").val(),remember: false, },
        success:function(result){
            console.log(result);
        }
    });
});

https://play.golang.org/p/PYvzhs4q4S

1 个答案:

答案 0 :(得分:8)

您需要先初始化地图。类似的东西:

things := make(map[string](chan int))

另一件事,你正在发送并试图从无缓冲的频道消费,因此该程序将陷入僵局。因此可以使用缓冲通道或在goroutine中发送/使用。

我在这里使用了一个缓冲通道:

package main

import "fmt"

func main() {
    things := make(map[string](chan int))

    things["stuff"] = make(chan int, 2)
    things["stuff"] <- 2
    mything := <-things["stuff"]
    fmt.Printf("my thing: %d", mything)
}

游乐场链接:https://play.golang.org/p/DV_taMtse5

make(chan int, 2)部分使缓冲区长度为2缓冲通道。在此处阅读更多相关信息:https://tour.golang.org/concurrency/3