课程
/后端开发
/Go
/Go语言第一课
不是说这个chan的长度是1吗?ch2 := make (chan string,1),对吧,那为啥可以放入“已到达!”这三个字加一个标点符号呢,这就占了8个字节16bit的空间呢,这怎么理解啊,求各位大神指点
2018-05-07
源自:Go语言第一课 5-5
正在回答
chan其实就是管道,这个管道可以 放入 什么类型的东西(就是 类型,例子中的 String),一共可以放入多少个这种东西(这就是 长度,例子中的 1),这就是 其 真正的含义。这个管道是 两头空的,只能从一头 放进去,从 另一头 取出来。当这个管道塞满了东西了后,再要塞 更多的东西,就 塞不进去了,只能等 另一边取了一些后,才能继续塞。所以,一个chan 满了之后,要往里面放入东西,只能等待(名词叫”堵塞“),等管道有空位的时候,才能再塞进去;而另外一边取东西的时候,也是一样,如果这个管道是空的,取不到东西,只能等待(”堵塞“)
chan的长度并不是指通道的字节数,而是可以缓存的基本类型元素的个数,ch2 := make(chan string, 1)是指通道ch2中可以保存一个字符串,而不论这个字符串有多长。
举报
Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础
2 回答如何快速判断一个 chan 的有效性?
5 回答length长度
1 回答chan 写入疑问
2 回答解释一下整段代码的含义
1 回答有人解释下调用流程吗?