请稍等 ...
×

采纳答案成功!

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

​var x chan int 和 x :=make(chan int) 的问题?

 var x chan int 和 x :=make(chan int),老师说前者是nil,所以要用后者,为什么呢?这两种定义方式怎么理解? 为什么前者打印出来是nil,后者打印出来类似0xc042044060 ?

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

1回答

ccmouse 2018-03-29 19:58:35

用var x chan int只是定义了一个具有初始值的变量,go语言里也叫零值。比如整数是0,channel就是nil。而用make是去分配一个,然后赋值给变量x,编译器判断出x的类型是channel,是一系列动作,所以不能只是在定义的时候就去分配。

0 回复 有任何疑惑可以回复我~
  • 老师,这里个打印结果是否也变相说明了,channel本身实际上是一个指针呢?感觉这个0xc042044060就是x这个变量自身的地址,这个地址里应该有一个指向真实channel物理地址的一个指针。
    回复 有任何疑惑可以回复我~ 2019-08-11 16:01:00
  • ccmouse 回复 FrankieLee #2
    是的。它里面肯定有个指针
    回复 有任何疑惑可以回复我~ 2019-08-11 18:09:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信