为啥先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 函数只能创建切片、映射、通道类型的变量
00 -
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
00
相似问题