| // +build ignore,OMIT | |
| package main | |
| import "fmt" | |
| var battle = make(chan string) | |
| func warrior(name string, done chan struct{}) { | |
| select { | |
| case opponent := <-battle: | |
| fmt.Printf("%s beat %s\n", name, opponent) | |
| case battle <- name: | |
| // I lost :-( | |
| } | |
| done <- struct{}{} | |
| } | |
| func main() { | |
| done := make(chan struct{}) | |
| langs := []string{"Go", "C", "C++", "Java", "Perl", "Python"} | |
| for _, l := range langs { go warrior(l, done) } | |
| for _ = range langs { <-done } | |
| } |