| // +build ignore,OMIT |
| |
| package main |
| |
| import ( |
| "fmt" |
| "time" |
| ) |
| |
| // STARTMAIN1 OMIT |
| type Ball struct{ hits int } |
| |
| func main() { |
| table := make(chan *Ball) |
| go player("ping", table) |
| go player("pong", table) // HL |
| |
| table <- new(Ball) // game on; toss the ball |
| time.Sleep(1 * time.Second) |
| <-table // game over; grab the ball |
| } |
| |
| func player(name string, table chan *Ball) { |
| for i := 0; ; i++ { |
| ball := <-table |
| ball.hits++ |
| fmt.Println(name, i, "hit", ball.hits) |
| time.Sleep(100 * time.Millisecond) |
| table <- ball |
| } |
| } |
| |
| // STOPMAIN1 OMIT |