User Tools

Site Tools


cs_lang:go

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cs_lang:go [2012/04/21 08:54] – created cedriccs_lang:go [2014/04/18 23:19] (current) – [Books] cedric
Line 1: Line 1:
 +====== Learning Go ======
 +  * [[http://tour.golang.org/ | A Tour of Go]].
 +
 +
 +
 +====== Simple examples ======
 +===== Sum the elements of a list =====
 +
 +<code go>
 +package main
 +
 +import "fmt"
 +
 +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[:len(a)/2], c)
 +    go sum(a[len(a)/2:], c)
 +    x, y := <-c, <-c
 +
 +    fmt.Println(x, y, x + y)
 +}
 +</code>
 +
 +
 +===== Producer-consumer problem =====
 +<code go>
 +package main
 + 
 +import ("fmt")
 + 
 +var done = make(chan bool)
 +var cake = make(chan int)
 + 
 +func produce (firstname string) {
 +    for i := 0; i < 10; i++ {
 +        fmt.Printf("%s make cake %d\n", firstname, i)
 +        cake <- i
 +    }
 +    done <- true
 +}
 + 
 +func consume (firstname string) {
 +    for {
 +      cake_number := <-cake
 +      fmt.Printf("%s eat cake %d\n", firstname, cake_number)
 +   }
 +}
 + 
 +func main () {
 +   go produce("Alice")
 +   go consume("Bob")
 +   go consume("Maxime")
 +   <- done
 +}
 +</code>
 +
 +===== Fork bomb =====
 +<code go>
 +package main
 +
 +import "fmt"
 +
 +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)
 +    }
 +}
 +</code>
  
  
 ====== Books ====== ====== Books ======
-<html> +[[https://pinboard.in/u:cedricbonhomme/t:cs_lang:go| Various resources]].
-<div id="w22d849f32faf968514921dfe12ee7e44"></div><script type="text/javascript" charset="UTF-8" src="http://www.librarything.com/widget_get.php?userid=cedricbonhomme&theID=w22d849f32faf968514921dfe12ee7e44"></script><noscript><a href="http://www.librarything.com/profile/cedricbonhomme">My Library</a> at <a href="http://www.librarything.com">LibraryThing</a></noscript> +
-</html>+
cs_lang/go.1334991243.txt.gz · Last modified: 2012/04/21 08:54 by cedric