Monday, 18 May 2015

Docker and golang

大学院の授業では

* Docker
* X.v6

を読むことになったので、今日はgo言語入門でした。Dockerはgoで書かれてるらしいです。

といっても、go は、ほとんど、セミコロンのないCなので、見るのは go routine と channel だけですね。
    for i:=0;i<10;i++ {
       go func() {
           fmt.Println(i)
       } ()
    }

とかするんですが、10 がたくさん表示される。あれ?
    for i:=0;i<10;i++ {
       j := i
       go func() {
           fmt.Println(j)
       } ()
    }

かと思ったが、やっぱり 10 。正解は、
    for i:=0;i<10;i++ {
       go func(i int) {
           fmt.Println(i)
       } (i)
    }

らしいです。for 文の方が先に終わっちゃうわけね。

昔、一通り追ったが、忘れてるな。channel は便利そうだが、大変そう。ちなみに、Docker でどのように使われているのかは謎です。

Docker は来週で片付けたい。

X.v6は、たぶん、6月初旬ぐらいに、まとめて読みます。 参考にしたのはこっちです。https://talks.golang.org/2012/concurrency.slide#12

No comments: