cs_lang:go
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cs_lang:go [2012/04/21 09:00] – cedric | cs_lang:go [2014/04/18 23:19] (current) – [Books] cedric | ||
|---|---|---|---|
| Line 9: | Line 9: | ||
| <code go> | <code go> | ||
| package main | package main | ||
| + | |||
| import " | import " | ||
| - | + | ||
| func sum(a []int, c chan int) { | func sum(a []int, c chan int) { | ||
| sum := 0 | sum := 0 | ||
| Line 18: | Line 19: | ||
| c <- sum // send sum to c | c <- sum // send sum to c | ||
| } | } | ||
| - | + | ||
| func main() { | func main() { | ||
| a := []int{7, 2, 8, -9, 4, 0} | a := []int{7, 2, 8, -9, 4, 0} | ||
| - | | + | |
| go sum(a[: | go sum(a[: | ||
| go sum(a[len(a)/ | go sum(a[len(a)/ | ||
| - | | + | |
| fmt.Println(x, | fmt.Println(x, | ||
| } | } | ||
| - | </go> | + | </code> |
| + | ===== Producer-consumer problem ===== | ||
| + | <code go> | ||
| + | package main | ||
| + | |||
| + | import (" | ||
| + | |||
| + | var done = make(chan bool) | ||
| + | var cake = make(chan int) | ||
| + | |||
| + | func produce (firstname string) { | ||
| + | for i := 0; i < 10; i++ { | ||
| + | fmt.Printf(" | ||
| + | cake <- i | ||
| + | } | ||
| + | done <- true | ||
| + | } | ||
| + | |||
| + | func consume (firstname string) { | ||
| + | for { | ||
| + | cake_number := <-cake | ||
| + | fmt.Printf(" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | func main () { | ||
| + | go produce(" | ||
| + | go consume(" | ||
| + | go consume(" | ||
| + | <- done | ||
| + | } | ||
| + | </ | ||
| - | ====== Books ====== | + | ===== Fork bomb ===== |
| - | <html> | + | <code go> |
| - | <div id=" | + | package main |
| - | </ | + | |
| + | import " | ||
| + | |||
| + | func main() { | ||
| + | c := make(chan bool) | ||
| + | go func() { | ||
| + | count := 0 | ||
| + | for <- c { | ||
| + | count++ | ||
| + | fmt.Println(count) | ||
| + | } | ||
| + | }() | ||
| + | bomb(c) | ||
| + | } | ||
| + | |||
| + | func bomb(tick chan bool) { | ||
| + | for { | ||
| + | tick <- true | ||
| + | go bomb(tick) | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Books ====== | ||
| [[https:// | [[https:// | ||
cs_lang/go.1334991642.txt.gz · Last modified: by cedric
