You pipeline data in Go by creating a channel, launching a goroutine to send data into it, and reading from it in the main thread until the channel closes.
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
for i := 1; i <= 3; i++ {
ch <- i
}
close(ch)
}()
for n := range ch {
fmt.Println(n)
}
}