Go简单开始
Go是一門編譯型語言,Go語言的工具鏈將源代碼及其依賴轉換成計算機的機器指令2。Go語
言提供的工具都通過一個單獨的命令 go 調用, go 命令有一系列子命令。最簡單的一個子命
令就是run。這個命令編譯一個或多個以.go結尾的源文件,鏈接庫文件,并運行最終生成的可
執行文件。
執行go文件:
| 1 | go run file_name.go |
如果不只是一次性實驗,你肯定希望能夠編譯這個程序,保存編譯結果以備將來之用。可以
用build子命令:
| 1 | go build helloworld.go |
這個命令生成一個名為helloworld的可執行的二進制文件3,之后你可以隨時運行它4,不需任
何處理。
可以從gopl.io網站上本書源碼倉庫
里獲取代碼:
| 1 | go get gopl.io/ch1/helloworld |
在當前目錄下得到bin和src文件
| 1 2 3 4 5 6 7 8 9 10 11 12 | package main import ( "fmt" ) func main() { name := "eatrice" go func(){ fmt.Printf("hello, %s.\n", name) }() } |
上述語句的輸出結果本來應該是hello eatrice,但是執行結果卻沒有任何顯示。這充分顯示了Go語句的并發性,Go函數執行與其他的語句是并發,由于Go包裝過程需要時間,所以,在main函數完成之前,Go語句還沒來得及執行,就已經退出main函數了,因此執行沒有結果。
通過對比下列的代碼,我們可知,可采用runtime.Gosched()方式來保證Go語句的運行,。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import ( "fmt" "runtime" ) func main() { name := "eatrice" go func(){ fmt.Printf("hello, %s.\n", name) }() runtime.Gosched() name = "harry" } |
輸出是hello eatrice
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import ( "fmt" "runtime" ) func main() { name := "eatrice" go func(){ fmt.Printf("hello, %s.\n", name) }() name = "harry" runtime.Gosched() } |
輸出是:hello harry
參考:
Go語言圣經
Go并發編程實戰
總結
- 上一篇: 票牛app靠谱吗 票牛能买到票吗
- 下一篇: 《魔兽世界怀旧服》幽灵岛任务怎么做 幽灵