GO語言學習筆記(三)初寫GO程式
一、第一個程式
名稱:helloworld.go
package main import "fmt" func main() { fmt.Println("hello world!") }
知識點1:Go語言的程式碼檔案一般是以.go作為字尾。
執行helloworld.go
執行:go run helloworld.go
輸出結果:hello world!
知識點2:使用run引數的意思是編譯並執行。
編譯成二進位制檔案
執行: go build -o helloworld helloworld.go
執行:ls檢視
helloworld helloworld.go
在當前目錄下會產生一個helloworld的二進位制檔案,我們可以直接執行這個二進位制檔案
執行二進位制檔案:./helloworld
執行結果:hello world!
分析這段GO語言程式碼:
1) package main:這一行是申明包名,所有Go語言編寫的檔案都是以“package xxxx”開頭,對於獨立執行的執行檔案,第一行必須是“package main”
2)import "fmt":表示匯入“fmt”包,“fmt”包是Go語言標準庫中的包,所以不需要下載和安裝。“fmt”包的作用是用於字串的格式化輸出。另外被引用的其他package被稱為庫或者稱為包
3)func main() {} :這一行是程式中的main主函式,也成為入口函式。Go程式在執行的時候,首先呼叫的函式就是main函式,大部分的語言都是以main作為邏輯上的入口函式,比如:c、python等。另外在Go語言中,函式都是使用func關鍵字來定義函式名稱
4)fmt.Println("hello world!") :這一行是呼叫fmt包的函式,把hello world字串輸出到控制檯。字串由雙引號包裹、表示是字串型別
二、交叉編譯
什麼是交叉編譯:
就是在一個平臺上可以編譯另一個平臺的二進位制程式碼檔案。例如,我們使用的是Mac系統,在Mac上可以編譯出可在Linux或者windwos系統上執行的可執行程式。
不同系統平臺的對比圖:

交叉編譯示例:(在mac系統上生成linux64位的可執行程式)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build helloword.go
解釋:CGO_ENABLED:指明cgo工具是否可用的標識,1位啟用cgo工具,0是關閉,交叉編譯不支援cgo工具
GOOS:指定目標作業系統
GOARCH:執行目標作業系統的架構,也就是是多少位的作業系統
這樣生成的helloworld二進位制包就可以拷貝到linux上運行了。
列舉不同平臺的交叉編譯:
1)在Mac上編譯LInux和Window 64位可執行程式
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build helloword.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build helloword.go
2)Linux上編譯Mac和Windows 64位可執行程式
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build helloword.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build helloword.go
3)Windows上編譯Mac和Linux 64位可執行程式
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build helloword.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build helloword.go