Go介紹
Go
語言被譽為21世紀的C
語言,由Google
公司開發,天生對高併發有著優秀的支援。並且語法極度簡潔,關鍵字僅有25個。
所以使用Go
語言時你不用擔心自己寫的和大神寫的有著天差地別,Go
語言開發者所書寫的程式碼大家基本都是能看得懂的。
值得一提的是Go
的跨平臺性,Go
語言跨平臺性強到令人髮指,你甚至可以再windows
下進行開發然後編譯出linux
下的二進位制檔案進行部署。
Go安裝
以下是Go
語言的官網,點選下載進行安裝即可。
Windows
windows
平臺下的安裝十分簡單。當我們下載完安裝程式後,雙擊開啟進行安裝即可。
Linux
如果你習慣了在Linux
下進行編碼,則可以安裝Linux
的Golang
。
當然,基於Golang
的跨平臺特性,你在window
下進行安裝和書寫程式碼後編譯為Linux
下的可執行檔案也可。
選擇你的Go
版本,進行安裝。
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz
將下載好的檔案解壓到/usr/local
目錄下(建議使用root
使用者解壓):
tar -zxvf go1.14.1.linux-amd64.tar.gz -C /usr/local # 解壓
最後配置一下環境變數,: Linux
下有兩個檔案可以配置環境變數,其中/etc/profile
是對所有使用者生效的;$HOME/.profile
是對當前使用者生效的,根據自己的情況自行選擇一個檔案開啟,新增如下兩行程式碼,儲存退出。
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
修改/etc/profile
後要重啟生效,修改$HOME/.profile
後使用source命令載入$HOME/.profile
檔案即可生效。 檢查:
~ go version
go version go1.14.1 linux/amd64
版本檢查
當安裝完Go
後,開啟終端輸入go version
命令即可檢查是否安裝成功。
目錄結構
我們在windows
下開啟剛剛安裝好的Go
,可檢視到如下的目錄結構:
目錄名 | 描述 |
---|---|
api | 每個版本的 api 變更差異 |
bin | go 原始碼包編譯出的編譯器(go)、文件工具(godoc)、格式化工具(gofmt) |
doc | 英文版的 Go 文件 |
lib | 引用的一些庫檔案 |
misc | 雜項用途的檔案,例如 Android 平臺的編譯、git 的提交鉤子等 |
pkg | Windows 平臺編譯好的中間檔案 |
src | 標準庫的原始碼 |
test | 測試用例 |
環境變數
GOROOT
GOROOT
為安裝Go
開發包的路徑。
GOPATH
GOPATH
的路徑需要我們自己在環境變數中進行配置,然後才可以使用Go
語言進行開發。
預設的在使用者變數中,有一個GOPATH
,我們可以將他修改為系統變數或者修改其中的值。
修改任意值即可。
在設定完環境變數後,使用go env
可進行測試檢視。
C:\Users\雲崖先生>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\雲崖先生\AppData\Local\go-build
set GOENV=C:\Users\雲崖先生\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\GoLeran\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\GoLeran
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=D:\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ 雲崖先生\AppData\Local\Temp\go-build516282802=/tmp/go-build -gno-record-gcc-switches
工程目錄
當配置完GOPATH
的環境變數後,我們還需要建立一些資料夾。
那麼對於個人開發者和工程開發來說,都具有一個不同的目錄結構。
個人開發
在GOPATH
中,我們編寫的GO
原始碼都應該存放於src
資料夾下。
注意:預設的GOPATH下的bin目錄也會新增至環境變數中。
工程開發
在工程開發中,推薦使用個人的Github
域名來進行資料夾的命名。
因為在Go
語言中,是按照包來進行管理的,所以為了防止不同包的專案名衝突,就可以按照這種結構來組織目錄。
編譯執行
VScode工具包
這裡建立出了一個Go
檔案,並書寫我們的第一個Go
程式。
在書寫Go
程式時,我們可以安裝一些Go
的工具包(需要先安裝git
)。
首先需要設定GOPROXY
,開啟終端設定如下:
go env -w GOPROXY=https://goproxy.cn,direct
開啟vscode
,Windows
平臺按下Ctrl+Shift+P
,Mac
平臺按Command+Shift+P
,這個時候vscode
介面會彈出一個輸入框,在其中輸入如下命令:
Go:install/Update Tools
然後全選,開始安裝工具包。
Go編寫
接下來編寫我們的第一個Go
程式,命名為hello.go
。
package main // 宣告main包,表明這是一個可執行程式
import "fmt" // 匯入內建的fmt包
func main() { // main 程式入口
fmt.Println("hello,world!!") // 終端列印
}
go build
go build
表示將原始碼編譯成可執行檔案。
如下,我們將hello.go
進行編譯,在終端輸入以下命令:
PS D:\GoLeran\src\yunya.com> go build -o hello.exe // 將hello.go進行編譯,編譯的檔名為hello.exe
PS D:\GoLeran\src\yunya.com> .\hello.exe // 執行該檔案
hello,world!!
如果不使用-o
,則將以上級目錄名稱作為編譯後的檔名稱。
當然,你也可以在其他地方使用go build
,後面跟上專案路徑。
go install
go install
會自動進行編譯,然後進行執行。
它會將編譯結果的可執行檔案放在GOPATH
的bin
目錄下。
go run
go run
可以使go
的原始碼檔案立即進行執行而不進行編譯。
D:\GoLeran\src\yunya.com>go run hello.go
hello,world!!
跨平臺編譯
預設我們go build
的可執行檔案都是當前作業系統可執行的檔案,如果我想在windows
下編譯一個Linux
下可執行檔案,那需要怎麼做呢?
只需要指定目標作業系統的平臺和處理器架構即可,在cmd
下輸入以下三條命令:
SET CGO_ENABLED=0 // 禁用CGO 使用了CGO的程式碼是不支援跨平臺編譯的
SET GOOS=linux // 目標平臺是linux
SET GOARCH=amd64 // 目標處理器架構是amd64
然後再執行go build
命令,得到的就是能夠在Linux
平臺執行的可執行檔案了。
Mac
下編譯 Linux
和Windows
平臺 64位 可執行程式:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
Linux
下編譯Mac
和Windows
平臺64位可執行程式:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
Windows
下編譯Mac
平臺64位可執行程式:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build