Goroutine サンプル

Goroutineのサンプルを作ってみる。 まずは、簡単なところから、

github.com

The Go Playground

package main

import "fmt"

func f(from string) {
        for i := 0; i < 3; i++ {
                fmt.Println(from, ":", i)
        }
}

func main() {

        f("direct")

        go f("goroutine1")
        go f("goroutine2")

        go func(msg string) {
                fmt.Println(msg)
        }("randum1")

        go func(msg string) {
                fmt.Println(msg)
        }("randum2")

        var input string
        fmt.Scanln(&input)
        fmt.Println("done")
}

実行するごとに結果の順番が変わる。

ここらへんのlogicはどうなっているのだろうか、探っていこう。

$ go run app.go

direct : 0
direct : 1
direct : 2
goroutine1 : 0
randum2
goroutine1 : 1
goroutine1 : 2
goroutine2 : 0
goroutine2 : 1
goroutine2 : 2
randum1

done

参考にしたサイト

Go by Example: Goroutines

やっとサーバーの事が書けたな、、