package main import "fmt" func main() { workChan := make(chan int, 10000) //存儲chan controlChan := make(chan int, 100) //控制chan var work int var mange int for i := 0; i < 100; i++ { go func() { defer func() {controlChan <- 1}() for j := 0; j < 100; j++ { workChan <- i } }() } for range controlChan { mange++ //當控制chal 滿 則關閉控制與工做channel if mange == 100 { close(workChan) close(controlChan) } } for range workChan { work++ } fmt.Println("channel長度", work) }