在简要地回顾Go语言规范,有效的Go和Go记忆模型之后,我仍然不清楚Go渠道是如何工作的。 他们是什么样的结构? 它们的行为就像一个线程安全的队列/数组。 他们的实现是否依赖于架构?
我试图创build一个asynchronous通道,我一直在寻找http://golang.org/ref/spec#Making_slices_maps_and_channels 。 c := make(chan int, 10) // channel with a buffer size of 10 这是什么意思,缓冲区大小是10? 什么具体的缓冲区大小代表/限制?
如果我从不检查它的状态,是否可以永远打开Go频道(从不closures频道)? 会导致内存泄漏吗? 下面的代码可以吗? func (requestCh chan<- Request) GetResponse(data RequestData) Response { reply := make(chan Response) requestCh <- Request{data: data, replyCh: reply} return <-reply }