User Tools

Site Tools


cs_lang:go

This is an old revision of the document!


Learning Go

Simple examples

Sum the elements of a list

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)
}

Fork bomb

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)
    }
}

Books

cs_lang/go.1335770589.txt.gz · Last modified: 2012/04/30 09:23 by cedric