通过渠道发送数据卡住了

时间:2015-05-23 05:09:21

标签: go

我正在编写一个使用长轮询的服务器,基本上我有一个定期运行的go例程并通过一个通道发送响应。但是,当程序试图发送到频道时程序会卡住。

我制作了一个简单的程序来演示这个问题:

package main

import (
    "log"
    "time"
)

var resp chan string

func main() {
    go send()
    listen()
}

func listen() {
    select {
    case response := <-resp:
        log.Printf("Writing response: %s\n", response)
    }
}

func send() {
    ticker := time.NewTicker(time.Duration(10000) * time.Millisecond)

    select {
    case <-ticker.C:
        // program gets stuck here
        log.Println("Sending")
        resp <- "Message"
    }
}

有谁看到问题可能是什么?感谢

1 个答案:

答案 0 :(得分:3)

您必须先使用频道才能使用

var resp = make(chan string)