请稍等 ...
×

采纳答案成功!

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

为啥先make([]chan int, 10)不能用呢

为啥需要先var在make,make关键字能否稍微讲一下。我先** make([]chan int, 10)**为啥不行呢

func chanDemo() {
	//var c chan int //c=nil,无法使用
	var channels [10]chan int
	//channels := make([]chan int, 10) //、为啥直接这么定义不行
	for i := 0; i < 10; i++ {
		channels[i] = make(chan int)
		go worker(i, channels[i])
	}
	for i := 0; i < 10; i++ {
		channels[i] <- 'a' + i
	}
	time.Sleep(time.Millisecond)

}

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

插入代码

2回答

hen_nam 2021-12-26 20:37:47

make 函数只能创建切片、映射、通道类型的变量


0 回复 有任何疑惑可以回复我~
Drn8 2021-12-16 21:25:33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func chanDemo() {
    //var channels [10]chan int
    channels := make([]chan int, 10)
    for i := 0; i < 10; i++ {
        channels[i] = make(chan int)
        go worker(i, channels[i])
    }
 
    for i := 0; i < 10; i++ {
        channels[i] <- 'a' + i
    }
 
    for i := 0; i < 10; i++ {
        channels[i] <- 'A' + i
    }
 
    time.Sleep(time.Millisecond)
}

我用上面的这段代码是可以工作的 go的版本是1.17.3

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号