funcleak(){
ch :=make(chanint)gofunc(){
val :=<-ch
fmt.Println("We received a value:", val)}()}
3.2 情况2:向已满的 buffered channel 写,但是没有读
3.3 情况3: select操作在所有case上阻塞
实现一个 fibonacci 数列生成器,并在独立的 goroutine 中运行
在读取完需要长度的数列后,如果 用于 退出生成器的 quit 忘了被 close (或写入数据)
select 将一直被阻塞造成 该 goroutine 泄露。
package main
import"fmt"funcfibonacci(c, quit chanint){
x, y :=0,1for{select{case c <- x:
x, y = y, x+y
case<-quit:
fmt.Println("quit")return}}}funcmain(){
c :=make(chanint)
quit :=make(chanint)gofibonacci(c, quit)for i :=0; i <10; i++{
fmt.Println(<- c)}// close(quit)}