// +build 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 |