初學 Golang 30 天 - (11)Goroutine

雖然有點早,但是我們來講一下 Go 很酷的特色 Goroutine ,他類似於其他語言的 Thread。

Goroutines

要使用 Goroutine 非常的簡單,只要一個字,一個很熟悉的字,「go」。
讓我們看看下面這個簡單的例子,

package main

import "fmt"

func f(n int) {
    for i := 0; i < 10; i++ {
        fmt.Println(n, ":", i)
    }
}

func main() {
    go f(0)
}

你執行後你會發現什麼東西都沒有印出!
不是 Go 有問題,因為使用 goroutine 是平行處理的,所以在還沒開始印 n 之前,main 這個主要的函式已經結束了。
我們使用一下內建的 time 函式,讓 main 韓式等一下,讓 goroutine 跑完。

package main

import (
    "fmt"
    "time"
)

func f(n int) {
    for i := 0; i < 10; i++ {
        fmt.Println(n, ":", i)
    }
}

func main() {
    go f(0)
    time.Sleep(time.Second * 1) // 暫停一秒鐘

}

你就可以看到印出 1 ~ 10 了。

comments powered by Disqus