go - 通过 channel 发送数据卡住

标签 go

我正在编写一个使用长轮询的服务器,基本上我有一个定期运行并通过 channel 发送响应的 go 例程。然而,程序在尝试发送到 channel 时卡住了。

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

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"
    }
}

有人知道问题出在哪里吗?谢谢

最佳答案

使用前必须先创建 channel

var resp = make(chan string)

关于go - 通过 channel 发送数据卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409099/

相关文章:

go - 从文件加载加密的 PKCS1 私钥

go - 如何从 Visual Studio Code 中的包覆盖范围中排除生成的模拟

pointers - 通过传递指针更改 slice

postgresql - 使用 SQLX 转到可选字段

go - goroutines中的请求时间

go - 如何避免路由器处理代码中的代码重复

go - 如何在golang中将数据结构作为参数传递

mongodb - 如何在 mongodb 中得到 "sort"和 "limit"结果?

go - 解析Golang中的dynamodb.GetItemOutput类型

go - 成功的websocket连接后如何使发送消息到特定的URL?