Reputation: 3904
Can we start the one decalred channel twice in 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)
}
In the function main If i try to use the same channel twice i'm getting default value of that channel
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
}
So to use it again i've to declare another channel. If this is not an error why this was done in the Go Lang. ? i'm using go -lang version 1.6
Upvotes: 2
Views: 833
Reputation: 42413
Channels are not "started", channels simply exist and are in one of two states:
A once closed channel stays closed forever. So yes, you have to make
a new channel, there is no "reopen" in Go.
Upvotes: 6