User Tools

Site Tools


cs_lang:go

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cs_lang:go [2012/04/21 08:55] cedriccs_lang:go [2014/04/18 23:19] (current) – [Books] cedric
Line 1: Line 1:
 ====== Learning Go ====== ====== Learning Go ======
-* [[http://tour.golang.org/ | A Tour of 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="w7807c19744300a8f904b3ca228f92656"></div><script type="text/javascript" charset="UTF-8" src="http://www.librarything.com/widget_get.php?userid=cedricbonhomme&theID=w7807c19744300a8f904b3ca228f92656"></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.1334991347.txt.gz · Last modified: 2012/04/21 08:55 by cedric