| // +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) |
| |
| table <- new(Ball) // game on; toss the ball |
| time.Sleep(1 * time.Second) |
| <-table // game over; grab the ball |
| |
| panic("show me the stacks") // HL |
| } |
| |
| func player(name string, table chan *Ball) { |
| for { |
| ball := <-table |
| ball.hits++ |
| fmt.Println(name, ball.hits) |
| time.Sleep(100 * time.Millisecond) |
| table <- ball |
| } |
| } |
| |
| // STOPMAIN1 OMIT |