2 回答
TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
你不能。這里的經(jīng)驗(yàn)法則是只有作家才能關(guān)閉頻道,這樣你就知道你不應(yīng)該再寫(xiě)信給那個(gè)頻道了。
一些簡(jiǎn)單的代碼如下所示:
for i := 0; i < 100; i++ {
value := calculateSomeValue()
channel <- value
}
close(channel) //indicate that we will no more send values
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果很少有 goroutin 寫(xiě)入通道,您也可以使用nil它來(lái)代替讀寫(xiě)。像這樣的東西closeselect
ch := make(chan int, 1)
var value int
ch <- 5
select {
case value = <-ch:
fmt.Println("value", value)
default:
fmt.Println("oops")
}
ch = nil
select {
case ch <- 5:
default:
fmt.Println("don't panic")
}
select {
case value = <-ch:
fmt.Println("value", value)
default:
fmt.Println("oops")
}
試試看https://play.golang.org/p/sp8jk961TB
添加回答
舉報(bào)
