采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
比如,我在编辑器上 输入 var c chan int 这样是不会报错的,但是却无法往这个 c 传入任何数值
如果 c:= make(chan int) 这样就可以,我想问下,为啥定一个chan变量只能用make,以及,make和var的区别是什么,为什么编辑器对 var c chan int 这种不报错,因为这种的 c 是不能使用的,求老师解答下这三个问题
var c chan int是定义了这个c的类型是chan int,但是c的值是nil。这句话本身是没有语法错误的,只是往nil channel是无法传入数值的。nil channel也是有一定作用的,在本节中nil channel配合select来使用,产生无法选择到的分支。我们在var c chan in后,也可以说c=make(chan int),注意这里必须用=而不是:=那样这个c就是一个正常的channel了。
那么c:=make(chan int),是定义变量c,它的初始值就是make(chan int)做出来的这个channel,它的类型由编译器推测,推测的结果就是can int。也就是说这样相当于:
var c chan intc=make(chan int)
var c chan int
c=make(chan int)
是不是可以这样理解: var c chan int 类型是chan int 值为nil 而 c:=make(chan int) 类型是chan int,值为make(chan int)做出的一个channel 表面来看尽管类型一样,但值不一样,意义不一样
登录后可查看更多问答,登录/注册
语法+分布式爬虫实战 为转型工程师量身打造
3.7k 14
713 1
2.0k 1
1.1k 12