GO語言學習筆記(三)初寫GO程序

1、第一個程序
名稱:helloworld.gopython

package main
import "fmt"
func main() {
        fmt.Println("hello world!")
}

知識點1:Go語言的代碼文件通常是以.go做爲後綴。linux

運行helloworld.go
執行:go run helloworld.go
輸出結果:hello world!
知識點2:使用run參數的意思是編譯並運行。windows

編譯成二進制文件
執行:go build -o helloworld helloworld.go
執行:ls查看
helloworld helloworld.go
在當前目錄下會產生一個helloworld的二進制文件,咱們能夠直接運行這個二進制文件
執行二進制文件:./helloworld
執行結果:hello world!架構

分析這段GO語言代碼:
1)package main:這一行是申明包名,全部Go語言編寫的文件都是以「package xxxx」開頭,對於獨立運行的執行文件,第一行必須是「package main」ide


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字符串輸出到控制檯。字符串由雙引號包裹、表示是字符串類型學習

2、交叉編譯
什麼是交叉編譯:
就是在一個平臺上能夠編譯另外一個平臺的二進制代碼文件。例如,咱們使用的是Mac系統,在Mac上能夠編譯出可在Linux或者windwos系統上運行的可執行程序。
不一樣系統平臺的對比圖:
GO語言學習筆記(三)初寫GO程序
交叉編譯示例:(在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.goui

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=0SET GOOS=linuxSET GOARCH=amd64go build helloword.go

相關文章
相關標籤/搜索