GO

GOの仕様が素敵だなぁ。
D言語っぽさを感じたのは僕だけだろうか。


ついき
ちょっと前にはhttpのtestにこけてたけどrelease外してcloneしてみたらtest通った

hg clone https://go.googlecode.com/hg/ $GOROOT


追記の追記
Makeの仕組みが用意されてて嬉しかった。GOFILES並べるだけ。

include $(GOROOT)/src/Make.$(GOARCH)
TARG=hello
GOFILES=\
    hello.go
include $(GOROOT)/src/Make.cmd

httpつかってみた

package main

import (
    "fmt";
    "http";
)

func main() {
    if res, _, err := http.Get("http://www.google.com/"); err == nil {
        for key, value := range res.Header {
            fmt.Printf("%s: %s\n", key, value);
        }
    }
}

うごいた


goroutine使ってみた

package main

import (
    "fmt";
    "time";
)

func generate(ch chan string) {
    for i := 0; ; i++ {
        ch <- fmt.Sprintf("hogehogeurl%d", i);
    }
}

func download(in, out chan string) {
    for {
        prime := <-in;
        fmt.Printf("download: %s\n", prime);
        out <- "ok";
        time.Sleep(1 * 1e9);
    }
}

func main() {
    in := make(chan string);
    out := make(chan string);
    go generate(in);
    for i := 0; i < 3; i++ {
        go download(in, out);
    }

    for i := 0; i < 20; i++ {
        <-out;
    }
}

これは楽しい