// ========================================================================== // $Id: closechannel.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: closechannel.go,v $ // Revision 1.1 2015/04/03 21:51:31 jlang // Added some more detailed examples on go channels // // ========================================================================== package main import ( "fmt" ) func main() { cities := []string{"Ottawa", "Toronto", "Gatineau", "Casselman"} ch := sendString(cities) for { str, ok := <- ch if !ok { break; } fmt.Printf("%s ", str) } } 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 } close(ch) }() return ch }