Ank*_*and 2 channel go goroutine
我们可以在Go lang两次启动一个十分水平通道吗?
package main
import (
"fmt"
)
func emit(c chan string) {
words := []string {"The", "quick", "brown", "fox"}
for _, word := range words {
c <- word
}
close(c)
}
Run Code Online (Sandbox Code Playgroud)
在函数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
}
Run Code Online (Sandbox Code Playgroud)
所以再次使用它我要声明另一个频道.如果这不是错误,为什么在Go Lang中完成.?我正在使用go -lang 1.6版
频道不是"开始"的,频道只是存在并处于以下两种状态之一:
曾经封闭的通道永远关闭.所以,是的,你需要make一个新的频道,Go中没有"重新开放".