Go 导致死锁的for循环

Go 导致死锁的for循环,go,concurrency,Go,Concurrency,我编写了以下代码示例: func-gen(numbers…int)您没有关闭sq函数中的out通道 go func() { for number := range in { out <- number * number } close(out) }() go func(){ 对于编号:=中的范围{ out您没有关闭sq功能中的out频道 go func() { for number := range in { out <

我编写了以下代码示例:


func-gen(numbers…int)您没有关闭
sq
函数中的
out
通道

go func() {
    for number := range in {
        out <- number * number
    }
    close(out)
}()
go func(){
对于编号:=中的范围{

out您没有关闭
sq
功能中的
out
频道

go func() {
    for number := range in {
        out <- number * number
    }
    close(out)
}()
go func(){
对于编号:=中的范围{

out通道块上的范围,因为通道在sq中未闭合

func sq(in <-chan int) <-chan int {
  out := make(chan int)

  go func() {
    for number := range in {
        out <- number * number
    }
    close(out)
  }()

  return out
}

func sq(在中)通道块上的范围,因为通道在sq中未闭合

func sq(in <-chan int) <-chan int {
  out := make(chan int)

  go func() {
    for number := range in {
        out <- number * number
    }
    close(out)
  }()

  return out
}
func sq(在