cs_lang:go
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
cs_lang:go [2012/04/21 08:56] – cedric | cs_lang:go [2012/04/30 09:23] – cedric | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Learning Go ====== | ====== Learning Go ====== | ||
* [[http:// | * [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ====== Simple examples ====== | ||
+ | ===== Sum the elements of a list ===== | ||
+ | |||
+ | <code go> | ||
+ | package main | ||
+ | |||
+ | import " | ||
+ | |||
+ | func sum(a []int, c chan int) { | ||
+ | sum := 0 | ||
+ | for _, v := range a { | ||
+ | sum += v | ||
+ | } | ||
+ | c <- sum // send sum to c | ||
+ | } | ||
+ | |||
+ | func main() { | ||
+ | a := []int{7, 2, 8, -9, 4, 0} | ||
+ | |||
+ | c := make(chan int) | ||
+ | go sum(a[: | ||
+ | go sum(a[len(a)/ | ||
+ | x, y := <-c, <-c | ||
+ | |||
+ | fmt.Println(x, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Fork bomb ===== | ||
+ | <code go> | ||
+ | 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 ====== | ====== Books ====== | ||
Line 6: | Line 64: | ||
<div id=" | <div id=" | ||
</ | </ | ||
+ | |||
+ | [[https:// |
cs_lang/go.txt · Last modified: 2014/04/18 23:19 by cedric