如果我从不判断GO通道的状态,是否可以让GO通道永远打开(决不关闭通道)?是否会导致内存泄漏?下面的代码可以吗?

func (requestCh chan<- Request) GetResponse(data RequestData) Response {
    reply := make(chan Response)
    requestCh <- Request{data: data, replyCh: reply}
    return <-reply
}

推荐答案

让围棋频道永远打开,永远不关闭是可以的.当该通道不再使用时,将对其进行垃圾回收.

请注意,只有在接收器处于关闭状态时才需要关闭通道

Design Question: Channel Closing

Go相关问答推荐

Golang html/模板&需要错误数量的参数1在模板中使用';调用';获得0&q;

切换选项卡时,Goland IDE中的光标自动转移

如何使用 go 读取 RDF xml 文件中的 XML 命名空间属性

从带有嵌套括号的字符串中提取值

Go 是否提供了标准或事实上的方法来处理单个语句中的错误(即内联错误处理)?

在 GoLang 中对自定义 struct 体数组进行排序

使用GOTK3和librsvg在Go中如何加载内联SVG?

使用 httptest 对 http 请求进行单元测试重试

Github Actions Go lambda 项目不同的 sha256sums

判断不同 go map 类型中的重复键

泛型:实现嵌套接口

处理程序后访问 HTTP 请求上下文

如何使用 Status 字段创建 Kubernetes 对象?

自定义指标未显示在 prometheus web ui 中,grafana 中也是如此

Go GCP 同时模拟两个服务帐户

go 堆栈跟踪:在某些函数调用参数或返回值之后的问题(?)标记是什么意思?

在 golang 中联合一个接口和类型

Go 导入范围查找 protobuf 类型

有没有办法在一个 goroutine 返回后延迟后取消上下文?

泛型:对具有返回自身的函数的类型的约束