package main
func main() {
ch := make(chan int)
go func() {
for {
select {
case l := <-ch:
println(l) // 可能是執行這個
case l2 := <-ch:
println(l2) // 也有可能執行這個
}
}
}()
for {
ch <- 1
}
}
自己理解的select
- 每次select只選擇一個有資料的通道執行,執行完畢後返回繼續select
- 每次select都把case打亂,從上往下執行,直到找到一個有資料的通道
- 如果case中的程式碼很耗時,可以用time.Sleep測試,是不會繼續進行下一次select的。
本作品採用《CC 協議》,轉載必須註明作者和本文連結