< Programmeren in Go
Programmeren in Go |
Select is een statement dat op een vergelijkbare manier als switch gebruikt kan worden maar alleen voor communicatie van channels wordt gebruikt.
package main import "rand" import "fmt" import "time" type Koe struct { n int // Koeiennummer gras int // De koe eet soms gras en soms niet. } func GrazendeKoe(n int, chan1 chan *Koe, chan2 chan *Koe) { koe := &Koe{n, 0} r := rand.New(rand.NewSource(time.Nanoseconds())) // Nanoseconds is een seed var j int for { j = r.Intn(2) // Waarde tussen 0 en 1 koe.gras = j if j==0 { chan1 <- koe } else { chan2 <- koe } time.Sleep(1000000000) } } func main() { var k *Koe chan1 := make(chan *Koe) // Koe loeit naar boer 1 chan2 := make(chan *Koe) // Koe loeit naar boer 2 go GrazendeKoe(1, chan1, chan2) go GrazendeKoe(2, chan1, chan2) for { select { case k = <- chan1: // Als we een signaal van chan1 krijgen fmt.Printf("Koe %d, Boer 1, Gras: %d \n", k.n, k.gras) case k = <- chan2: // Waarde niet opslaan kan door laag streepje fmt.Printf("Koe %d, Boer 2, Gras: %d \n", k.n, k.gras) } } }
This article is issued from
Wikibooks.
The text is licensed under Creative
Commons - Attribution - Sharealike.
Additional terms may apply for the media files.