package main import ( "fmt" "time" ) func processChannel(in <-chan int, out chan<- string) { for inValue := range in { result := fmt.Sprintf("Hello %d", inValue) out <- result } } func main() { receiveChan := make(chan string) sendChan := make(chan int) go func() { for value := range receiveChan { fmt.Println(value) } }() go processChannel(sendChan, receiveChan) for i := 0; i < 10; i++ { sendChan <- i } close(sendChan) time.Sleep(1e7) }