go 語言是一種併發程式語言,在 go 裡有乙個非常重要的關鍵字 go(goroutine),一般我們可以用它做一些非同步,併發的任務。
goroutine 用來呼叫函式,當某個函式被 go 關鍵字呼叫後,go 就會建立乙個類似協程的東西,來執行這個函式,這樣可以輕易的實現併發。
示例:
package main
import
("fmt"
)func
main()
func
work1()
func
work2()
結果:
[全部完成]
當然這是乙個不恰當的示例,但這也證明了非同步執行,在呼叫work1,work2之後不等輸出結果,就繼續執行了。
要想等非同步執行完之後,再執行最後的輸出,需要加入waitgroup
正確示例:
package main
import
("fmt"
"sync"
)var waitgroup sync.waitgroup
func
main()
func
work1()
func
work2()
結果:
work2
work1
[全部完成]
waitgroup詳解,見: Go goroutine 不可濫用
goroutine 是go語言最大的創新,但這並不意味著我們可以隨意使用。原因 1 goroutine的指標傳遞是不安全的 2 goroutine增加了函式的危險係數 3 goroutine的濫用陷阱 處理方法 1 當啟動乙個goroutine的時候,如果乙個函式必須要傳遞乙個指標,但是函式層級很深...
Go語言之GO 語言常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...
Go 初學Go語言
馬上要去實習了,要開始實戰了 今天在這總結一些基礎用法,方便後面自己查閱 總結的參考資料為go by example,一邊複習一邊記錄 go by example var a string initial var b,c int 1 2 一次宣告多個 var d true 自動推斷型別 var e ...