问答详情
源自:5-5 Go语言-通道类型

chan的长度如何解释

不是说这个chan的长度是1吗?ch2 := make (chan string,1),对吧,那为啥可以放入“已到达!”这三个字加一个标点符号呢,这就占了8个字节16bit的空间呢,这怎么理解啊,求各位大神指点

提问者:慕田峪6035161 2018-05-07 12:32

个回答

  • tom_0
    2019-05-02 14:05:39

    chan其实就是管道,这个管道可以 放入 什么类型的东西(就是 类型,例子中的 String),一共可以放入多少个这种东西(这就是 长度,例子中的 1),这就是 其 真正的含义。这个管道是 两头空的,只能从一头 放进去,从 另一头 取出来。当这个管道塞满了东西了后,再要塞 更多的东西,就 塞不进去了,只能等 另一边取了一些后,才能继续塞。所以,一个chan 满了之后,要往里面放入东西,只能等待(名词叫”堵塞“),等管道有空位的时候,才能再塞进去;而另外一边取东西的时候,也是一样,如果这个管道是空的,取不到东西,只能等待(”堵塞“)

  • 慕勒215309
    2018-05-09 15:24:57

    chan的长度并不是指通道的字节数,而是可以缓存的基本类型元素的个数,ch2 := make(chan string, 1)是指通道ch2中可以保存一个字符串,而不论这个字符串有多长。