请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

定义一个chan变量是不是不能用 var 关键字来定义

比如,我在编辑器上 输入 var c chan int  这样是不会报错的,但是却无法往这个 c 传入任何数值

如果 c:= make(chan int) 这样就可以,我想问下,为啥定一个chan变量只能用make,以及,make和var的区别是什么为什么编辑器对 var c chan int 这种不报错,因为这种的 c 是不能使用的,求老师解答下这三个问题

正在回答 回答被采纳积分+3

1回答

ccmouse 2020-06-03 16:36:22

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 int

c=make(chan int)

1 回复 有任何疑惑可以回复我~
  • EnzoLiu #1
    是不是可以这样理解:
    var c chan int  类型是chan int 值为nil
    而 c:=make(chan int) 类型是chan int,值为make(chan int)做出的一个channel
    
    表面来看尽管类型一样,但值不一样,意义不一样
    回复 有任何疑惑可以回复我~ 2020-08-01 19:41:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信