// ==========================================================================
// $Id: rangechannel.go,v 1.1 2015/04/03 21:51:31 jlang Exp $
// CSI2120 GO: Concurrency
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   EECS, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada.
//   http://www.eecs.uottawa.ca
//
// Creator: Jochen Lang
// Email:   jlang@eecs.uottawa.ca
// ==========================================================================
// $Log: rangechannel.go,v $
// Revision 1.1  2015/04/03 21:51:31  jlang
// Added some more detailed examples on go channels
//
// ==========================================================================
package main

import (
	"fmt"
	"time"
)

func main() {
	cities := []string{"Ottawa", "Toronto", "Gatineau", "Casselman"}
	recieveString(sendString(cities))
	time.Sleep(1 * time.Second)
}

func sendString(strArr []string) chan string {
	ch := make(chan string)
	go func() { // start a lambda in a go routine
		for _,s := range strArr {
			ch <- s
		}
	}()
	return ch
}

func recieveString(ch chan string) {
	go func() {
		for str := range ch {
			fmt.Printf("%s ", str)
		}
	}()
}
