我们可以在 Go lang 中启动一个贴花频道两次吗?package mainimport ( "fmt")func emit(c chan string) { words := []string {"The", "quick", "brown", "fox"} for _, word := range words { c <- word } close(c)}在函数 main 如果我尝试使用相同的通道两次,我将获得该通道的默认值func main() { wordChannel := make(chan string) go emit(wordChannel) for word := range wordChannel { fmt.Printf("%s ", word) } go emit(wordChannel) word1 := <-wordChannel fmt.Printf("%s" , word1) // prints Default value}所以要再次使用它,我必须声明另一个频道。如果这不是错误,为什么在 Go Lang 中这样做。? 我正在使用 go -lang 1.6 版
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
通道没有“启动”,通道只是存在并且处于以下两种状态之一:
"open" 在这种情况下,您可以向他们发送值(并接收发送的值),或者
“关闭”,您无法从关闭的通道发送和接收会导致“零值,假”。
曾经关闭的频道将永远关闭。所以是的,你必须有make
一个新频道,Go 中没有“重新打开”。
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消