我们可以在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)
}
在函数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 version 1.6
答案 0 :(得分:5)
频道不是“已启动”,频道只是存在且处于以下两种状态之一:
曾经关闭的频道永远关闭。所以,是的,你必须config.azf = {
enabled: true,
protocol: 'http',
host: '192.168.4.180',
port: 8080,
custom_policy: undefined
};
一个新频道,Go中没有“重新开启”。