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

来源:11-1 channel

matthew21

2021-12-08

为啥需要先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)

}
写回答

2回答

hen_nam

2021-12-26

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


0
0

Drn8

2021-12-16

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
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程