We have a below scenario:
package main
type Consumer chan interface {
OpenChannel()
CloseChannel()
}
type IntChannel chan int
type StringChannel chan string
func (c IntChannel) OpenChannel() {
}
func (c IntChannel) CloseChannel() {
}
func (c StringChannel) OpenChannel() {
}
func (c StringChannel) CloseChannel() {
}
func main() {
var dataChannel Consumer = make(IntChannel)
for data = range dataChannel {
}
}
Goal is to range
on dataChannel
.
var dataChannel Consumer = make(IntChannel)
gives error: cannot use make(IntChannel) (value of type IntChannel) as Consumer value in variable declaration
We pick int channel or string channel based on a given config value at runtime.
Read this answer, but not much help.
How to range on a channel type that picks either int data or string data?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…