请稍等 ...
×

采纳答案成功!

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

为啥先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
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下载
官方微信