Go語言編譯環(huán)境設置教程
Go語言優(yōu)勢
- 天生支持高并發(fā)
可以自由的去控制其并發(fā)量,也就是攜程,通過go routine關鍵字就行了。
- 自動垃圾回收機制
- 內(nèi)存的清理
- 不需要環(huán)境依賴
在運行go程序的時候是以二進制的方式進行運行,go build之后是生成二進制文件。
像windows的exec一樣,直接丟到Linux上面執(zhí)行就行了,不需要安裝任何環(huán)境。
- 云原生無縫接入
- 社區(qū)活躍度
- 易上手
下載 Go 配置編譯環(huán)境
如果要編寫和閱讀代碼,首先要編譯安裝這個語言的編譯環(huán)境,
- Go 安裝文件以及源代碼 https://golang.google.cn/dl/
- 下載對應平臺的二進制文件并安裝
- 環(huán)境變量
GOROOT
- go 的安裝路徑
GOPATH
src:存放源代碼pkg:存放依賴包,三方庫的安裝路徑bin:存放可執(zhí)行文件
如果是新環(huán)境需要創(chuàng)建 /Users/lulei/go/src/github.com這個目錄的,在這個目錄里面就可以去克隆GitHub的地址。
lulei@luleideMacBook-Pro github.com % pwd /Users/lulei/go/src/github.com lulei@luleideMacBook-Pro github.com % ls astaxie cespare hashicorp mitchellh prometheus beorn7 golang lovekeepcoding pkg shiena PS C:\Users\lucas\GolandProjects\awesomeProject> go env set GOROOT=C:/Users/lucas/sdk/go1.21.11 set GOPATH=C:\Users\lucas\go C:\Users\lucas\go\pkg\mod\cache
其他常用變量
GOOS,GOARCH,GOPROXY
國內(nèi)用戶建議設置goproxy:export GOPROXY=https://goproxy.cn(因為防火墻的原因,好多依賴包是無法直接拉取的,設置這個那么會通過這個代理去拉)
配置 GOPROXY
Go默認的GOPROXY的值是:GOPROXY=https://proxy.golang.org,direct。
這個goproxy在使用go get安裝第三方庫的時候會報錯,導致無法下載成功,所以必須要修改一下。
- windows使用如下命令
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct
- linux/macos
export GO111MODULE=on export GOPROXY=https://goproxy.io
IDE 設置(VS Code)
下載并安裝 Visual Studio Code https://code.visualstudio.com/download
安裝 Go 語言插件 https://marketplace.visualstudio.com/items?itemName=golang.go
其他可選項
- Intellj goland,收費軟件
- vim,sublime等
一些基本命令

項目執(zhí)行方式有兩種,第一種go build,生成二進制文件main.exe,直接執(zhí)行即可。
PS C:\Users\lucas\GolandProjects\awesomeProject> go build main.go
編譯產(chǎn)生一個二進制文件

其次就是go run main.go,先將main.go去編譯了,編譯好之后直接執(zhí)行,然后可執(zhí)行文件是不保留的。
PS C:\Users\lucas\GolandProjects\awesomeProject> go run main.gohello golang

build:從源代碼構建成可執(zhí)行文件get:下載一個包install:go install從github上面下載某一個包并且安裝到本地,相當于是編譯安裝,所以很多時候開發(fā)一個go語言項目,上傳到GitHub上面,你希望別人可以使用你的項目,如果go get會將源代碼下載下來,如果是go install那么會將源代碼下載下來,編譯完成直接安裝,接下來就可以直接使用。
module awesomeProject2 go 1.16 require github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6 // indirect lulei@luleideMacBook-Pro awesomeProject2 % go get github.com/lovekeepcoding/testmath go get: added github.com/lovekeepcoding/testmath v0.0.0-20220225034816-3d3a22d574b6
module用來做依賴管理的test用來做單元測試的
Go build
Go 語言不支持動態(tài)鏈接,因此編譯時會將所有依賴編譯進同一個二進制文件。(無論拷貝到任何環(huán)境里面,因為所有依賴都會被編譯到一起,所以可以順利運行的,代價就是安裝包會大一些)
指定輸出目錄。(go build 將go語言的源代碼編譯成一個二進制文件)
go build –o bin/mybinary .
lulei@luleideMacBook-Pro awesomeProject4 % go build lulei@luleideMacBook-Pro awesomeProject4 % ls awesomeProject4 go.mod main.go lulei@luleideMacBook-Pro awesomeProject4 % ./awesomeProject4 3
在構建的時候源代碼分離
常用環(huán)境變量設置編譯操作系統(tǒng)和 CPU 架構。
GOOS=linux GOARCH=amd64 go build
全支持列表。
$GOROOT/src/go/build/syslist.go
Go test
Go 語言原生自帶測試
import "testing"
func TestIncrease(t *testing.T) {
t.Log("Start testing")
increase(1, 2)
}寫任何程序的時候,都需要去做單元測試,如何驗證你寫的代碼是否健壯呢?
一種是手工測試,手工測試會有問題,當你的程序不斷的改進修改,重復的手工測試會使得你的整個開發(fā)效率非常低,所以在整個開發(fā)過程當中都會有要求,我寫的業(yè)務邏輯都是需要對應編寫測試用例的,這個測試用例第一步就是單元測試。
單元測試是面向代碼的,比如說你寫了一個函數(shù),你需要驗證這個函數(shù)在各種情況下的行為是否正常,你們就需要寫很多的測試用例,go語言原生自帶單元測試的支持。
- go test ./… -v 運行測試
- go test命令掃描所有*_test.go為結尾的文件,慣例是將測試代碼與正式代碼放在同目錄, 如 foo.go 的測試代碼一般寫在 foo_test.go

編寫測試用例的時候,會將單測的代碼和主代碼放在一個包,這樣的好處是私有函數(shù),私有的變量都可以在單測里面被引用到。
Go vet
有些錯誤并不明顯,這個錯誤并不會影響編譯。但是它本身的邏輯會有一些小的瑕疵,在某些情況下可能會引發(fā)一些問題,針對這些情況,提供了上面這條命令。
它會檢測出程序運行當中可能出現(xiàn)的問題,比如下面??這些。

在多線程里面,哪個線程先執(zhí)行,哪個線程后執(zhí)行,這是不能確保的,如果主線程啟動了一些子線程去運行,主線程立馬退出了,很可能子線程還沒有被正確的執(zhí)行,就會被一起退出。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Golang?errgroup?設計及實現(xiàn)原理解析
這篇文章主要為大家介紹了Golang?errgroup?設計及實現(xiàn)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
Golang中gRPC內(nèi)置Trace的實現(xiàn)
gRPC內(nèi)置了基于golang.org/x/net/trace包的客戶端和服務端請求追蹤,默認開啟狀態(tài),可以查看事件和請求日志,幫助調(diào)試,具有一定的參考價值,感興趣的可以了解一下2025-03-03
go語言通過odbc操作Access數(shù)據(jù)庫的方法
這篇文章主要介紹了go語言通過odbc操作Access數(shù)據(jù)庫的方法,實例分析了Go語言通過odbc連接、查詢與關閉access數(shù)據(jù)庫的技巧,需要的朋友可以參考下2015-03-03

