func rcvData(rcvCh chan string) {
	data := "empty"
	counter := 1
	for c := time.Tick(time.Duration(rcvSpeedSeconds) * time.Second); ; <-c {
		fmt.Printf("%40d - START RECEIVING DATA\n", counter)
		for {
			select {
			case newVal := <-rcvCh:
				data = newVal
				fmt.Printf("%40d - Received data %v\n", counter, data)
				continue
			default:
			}
			break
		}
		fmt.Printf("%40d - Using data %v\n", counter, data)
		counter++
	}
}
rcvData - Checks for data every x seconds - Does not wait.
package main
import (
	"fmt"
	"strconv"
	"time"
)
const sendSpeedSeconds = 5
const rcvSpeedSeconds = 2
func sendData(sendCh chan string) {
	var data string
	counter := 1
	for c := time.Tick(time.Duration(sendSpeedSeconds) * time.Second); ; <-c {
		fmt.Printf("%4d - START SENDING DATA\n", counter)
		data = strconv.Itoa(counter)
		sendCh <- data
		fmt.Printf("%4d - Sent data %v\n", counter, data)
		counter++
	}
}