// ========================================================================== // $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) } }() }