探索Goroutine:Go語言的併發魔法
👨💻簡介 在日常生活中,如果能同時做很多事情,效率肯定大大提升,那麼在Go語言中,該如何做到呢,答案就是今天的主角Goroutine了,在Go語言中,讓併發變得簡單的強大工具,今天就是來給他一個快速介紹。 什麼是Goroutine? 首先,讓我們以一個簡單的方式來解釋什麼是Goroutine。Goroutine是Go語言的一個特別的功能,它就像是小型的工作任務,可以讓我們同時處理很多事情,而不需要浪費太多電腦資源。可以把它想像成比傳統方式更聰明的方式來處理多項工作,而不會讓電腦變得超級忙碌。這種功能讓Go語言在處理大量同時執行的工作時變得非常強大。 如何創建和啟動Goroutine 要使用Goroutine很簡單,只需要創建一個函數,然後使用go關鍵字在要使用goroutine的函數前面就完成了。可以看以下範例: package main import ( "fmt" ) func main() { go sayHello() // 主程式不會等待Goroutine完成 } func sayHello() { fmt.Println("Hello, Goroutine!") } 在這個例子中,我們使用go關鍵字啟動一個新的Goroutine,Goroutine執行了sayHello函數。但須注意,主程式main不會等待Goroutine完成,所以可能不會看到有印出任何東西來。 可以稍微讓main主程式睡一下,就可以看到輸出了 package main import ( "fmt" "time" ) func main() { go sayHello() time.Sleep(1) } func sayHello() { fmt.Println("Hello, Goroutine!") } Goroutine的執行過程 下面提供了一個簡單的小程式,在主程式裡有兩個goroutine,試著執行一下程式可以發現輸出是一段一段的,會是0跟1交錯印出,代表兩邊的goroutine會搶著印出,呈現競爭狀態 package main import ( "fmt" "time" ) func main() { go print1() go print2() time.Sleep(time.Second) } func print1() { for i := 0; i < 100; i++ { fmt....