此带有无缓冲通道的代码是否会导致Go中的goroutine泄漏?

此带有无缓冲通道的代码是否会导致Go中的goroutine泄漏?,go,goroutine,Go,Goroutine,我正在用goroutine和channels编写一些golang并发代码,怀疑我的代码可能导致goroutine泄漏。我的情况类似于下面的代码,或者你可以打开这个 func main{ numCount:=3 numChan:=makechan int 对于i:=0;i

我正在用goroutine和channels编写一些golang并发代码,怀疑我的代码可能导致goroutine泄漏。我的情况类似于下面的代码,或者你可以打开这个

func main{ numCount:=3 numChan:=makechan int 对于i:=0;inumChan您的代码有两个问题

首先,从理论上讲,存在goroutine泄漏,因为任何试图向容量为零的通道(无缓冲通道或已填充缓冲通道)发送值的尝试都会阻塞发送goroutine,直到在该通道上执行接收操作为止


因此,是的,根据通道工作方式的定义,当主goroutine返回时,您的所有三个goroutine都将在numChan中被阻止,因为整个过程都会退出。谢谢您的回答。我想知道如果主goroutine没有终止,是否会有goroutine泄漏。我应该清楚地表达出来,我的错:@Adr伊恩
Adding num: 0 to chan
Adding num: 1 to chan
Adding num: 2 to chan
panic: Goroutine Resource Leak Test

goroutine 1 [running]:
main.main()
    /tmp/sandbox011109649/prog.go:21 +0xc0