golang channel关于len的笔记
在golang中len用来计算一个数据结构的长度,这个和在c++、python中是一样的,但是另外两种语言是没有channel这种数据类型的,那么在golang中len(channel)表示什么呢?直接上代码检测
1 | package main |
0
2
可以看到数据结果分别是0,2,所以可以确定的是len计算的是channel里面元素的数量,这里需要额外提的一点是golang里面channel的使用一定要事先使用make进行内存分配,类似于C语言里面buffer使用之前必须malloc,所以对于只有声明没有make的channel使用len求值的结果仍然是0,因此判断一个channel是否malloc的方法应该是使用nil,同样不要向一个nil的channel里面写数据,会一直阻塞,也不要向一个close的channel写数据会直接pannic,关于channel的底层实现golang里面是指针,因此在作为函数参数传参的时候也并不会复制创建一个channel而是类似于传指针,这个以后有机会说:)
转载请注明来源链接 http://just4fun.im/2018/05/06/golang-channel长度相关以及正确判空的方式/ 尊重知识,谢谢:)