Go开发 之 Go的 9个 基本命令
文章目錄
- 1、go build命令(編譯命令)
- 1.1、go build 無參數(shù)編譯
- 1.2、go build 參數(shù)設(shè)置
- 1.3、示例
- 2、go clean命令(清除編譯文件)
- 2.1、參數(shù)
- 2.2、示例
- 3、go run命令(編譯并運行)
- 3.1、參數(shù)
- 3.2、示例
- 4、go fmt命令(格式化代碼文件)
- 4.1、參數(shù)
- 4.2、示例
- 5、go install命令(編譯并安裝)
- 5.1、參數(shù)
- 5.2、示例
- 6、go get命令(一鍵獲取包、編譯并安裝)
- 6.1、參數(shù)
- 6.2、示例
- 7、go generate命令(在編譯前自動化生成某類代碼)
- 7.1、參數(shù)
- 7.2、示例
- 8、go test命令(測試命令)
- 9、go pprof命令(性能分析命令)
1、go build命令(編譯命令)
1.1、go build 無參數(shù)編譯
// 編譯,生成可執(zhí)行文件 go build ***.go// 運行可執(zhí)行文件,windows上會加上exe,linux沒有后綴 ./可執(zhí)行文件// go build+文件列表,會生成多個可執(zhí)行文件 go build ***.go ***.go ……1.2、go build 參數(shù)設(shè)置
| -o | 編譯的包名 |
| -v | 編譯時顯示包名 |
| -p n | 開啟并發(fā)編譯,默認情況下該值為 CPU 邏輯核數(shù) |
| -a | 強制重新構(gòu)建 |
| -n | 打印編譯時會用到的所有命令,但不真正執(zhí)行 |
| -x | 打印編譯時會用到的所有命令 |
| -race | 開啟競態(tài)檢測 |
1.3、示例
2、go clean命令(清除編譯文件)
2.1、參數(shù)
go clean 命令是用來移除當(dāng)前源碼包和關(guān)聯(lián)源碼包里面編譯生成的文件。這些文件包括:
- _obj/ 舊的 object 目錄,由 Makefiles 遺留
- _test/ 舊的 test 目錄,由 Makefiles 遺留
- _testmain.go 舊的 gotest 文件,由M akefiles 遺留
- test.out 舊的 test 記錄,由 Makefiles 遺留
- build.out 舊的 test 記錄,由 Makefiles 遺留
- *.[568ao] object 文件,由 Makefiles 遺留
- DIR(.exe) 由 go build 產(chǎn)生
- DIR.test(.exe) 由 go test -c 產(chǎn)生
- MAINFILE(.exe) 由 go build MAINFILE.go 產(chǎn)生
- *.so 由 SWIG 產(chǎn)生
參數(shù)介紹
- -i 清除關(guān)聯(lián)的安裝的包和可運行文件,也就是通過 go install 安裝的文件
- -n 把需要執(zhí)行的清除命令打印出來,但是不執(zhí)行,這樣就可以很容易的知道底層是如何運行的
- -r 循環(huán)的清除在 import 中引入的包
- -x 打印出來執(zhí)行的詳細命令,其實就是 -n 打印的執(zhí)行版本
一般都是利用這個命令清除編譯文件,然后 github 遞交源碼,在本機測試的時候這些編譯文件都是和系統(tǒng)相關(guān)的,但是對于源碼管理來說沒必要。
go clean -i -ncd /Users/astaxie/develop/gopath/src/mathapp rm -f mathapp mathapp.exe mathapp.test mathapp.test.exe app app.exe rm -f /Users/astaxie/develop/gopath/bin/mathapp2.2、示例
3、go run命令(編譯并運行)
3.1、參數(shù)
go run 命令會編譯源碼,并且直接執(zhí)行源碼的 main() 函數(shù),不會在當(dāng)前目錄留下可執(zhí)行文件。
go run 不能使用“go run+包”的方式進行編譯,如需快速編譯運行包,需要使用如下步驟來代替:
- 使用 go build 生成可執(zhí)行文件。
- 運行可執(zhí)行文件。
3.2、示例
4、go fmt命令(格式化代碼文件)
4.1、參數(shù)
為了減少浪費在排版上的時間,go 工具集中提供了一個 go fmt 命令它可以幫你格式化你寫好的代碼文件,使你寫代碼的時候不需要關(guān)心格式,只需要在寫完之后執(zhí)行g(shù)o fmt <文件名>.go ,代碼就會被修改成了標(biāo)準(zhǔn)格式。
gofmt -w -l src,可以格式化整個項目。所以 go fmt 是 gofmt 的上層一個包裝的命令。
參數(shù)介紹
- -l 顯示那些需要格式化的文件
- -w 把改寫后的內(nèi)容直接寫入到文件中,而不是作為結(jié)果打印到標(biāo)準(zhǔn)輸出。
- -r 添加形如“a[b:len(a)] -> a[b:]”的重寫規(guī)則,方便我們做批量替換
- -s 簡化文件中的代碼
- -d 顯示格式化前后的 diff 而不是寫入文件,默認是 false
- -e 打印所有的語法錯誤到標(biāo)準(zhǔn)輸出。如果不使用此標(biāo)記,則只會打印不同行的前 10 個錯誤。
- -cpuprofile 支持調(diào)試模式,寫入相應(yīng)的 cpufile 到指定的文件
4.2、示例
5、go install命令(編譯并安裝)
5.1、參數(shù)
go install 只是將編譯的中間文件放在 GOPATH 的 pkg 目錄下,以及固定地將編譯結(jié)果放在 GOPATH 的 bin 目錄下。這個命令在內(nèi)部實際上分成了兩步操作:
- 第1步是生成結(jié)果文件(可執(zhí)行文件或者 .a 包),
- 第2步會把編譯好的結(jié)果移到 $GOPATH/pkg 或者 $GOPATH/bin。
go install 的編譯過程有如下規(guī)律:
- go install 是建立在 GOPATH 上的,無法在獨立的目錄里使用 go install。
- GOPATH 下的 bin 目錄放置的是使用 go install 生成的可執(zhí)行文件,可執(zhí)行文件的名稱來自于編譯時的包名。
- go install 輸出目錄始終為 GOPATH 下的 bin 目錄,無法使用-o附加參數(shù)進行自定義。
- GOPATH 下的 pkg 目錄放置的是編譯期間的中間文件。
5.2、示例
go install 會在GOPATH的bin目錄下生成對應(yīng)的可執(zhí)行文件
6、go get命令(一鍵獲取包、編譯并安裝)
6.1、參數(shù)
golang.org在國內(nèi)由于一些眾所周知的原因無法直接訪問,因為golang.org被墻的原因,可以使用github.com/golang/tools 和 golang.org/x/tools 是一樣的,下載后復(fù)制到golang.org中。
都可以用:
參數(shù)介紹:
- -d 只下載不安裝
- -f 只有在你包含了 -u 參數(shù)的時候才有效,不讓 -u 去驗證 import 中的每一個都已經(jīng)獲取了,這對于本地 fork 的包特別有用
- -fix 在獲取源碼之后先運行fix,然后再去做其他的事情
- -t 同時也下載需要為運行測試所需要的包
- -u 強制使用網(wǎng)絡(luò)去更新包和它的依賴包
- -v 顯示執(zhí)行的命令
6.2、示例
7、go generate命令(在編譯前自動化生成某類代碼)
7.1、參數(shù)
go generate 命令是從 Go1.4 開始設(shè)計的,用于在編譯前自動化生成某類代碼。
go generate 和 go build 是完全不一樣的命令,通過分析源碼中特殊的注釋,然后執(zhí)行相應(yīng)的命令。
這樣在同一個目錄下執(zhí)行命令go generate就會自動運行命令command arg1 arg2。command可以是在PATH中的任何命令,應(yīng)用非常廣泛。
有幾點需要注意:
- 該特殊注釋必須在 .go 源碼文件中。
- 每個源碼文件可以包含多個 generate 特殊注釋時。
- 顯示運行 go generate 命令時,才會執(zhí)行特殊注釋后面的命令。
- 命令串行執(zhí)行的,如果出錯,就終止后面的執(zhí)行。
- 特殊注釋必須以"//go:generate"開頭,雙斜線后面沒有空格。
7.2、示例
8、go test命令(測試命令)
go test 命令,會自動讀取源碼目錄下面名為 *_test.go 的文件,生成并運行測試用的可執(zhí)行文件。
主要提供“單元測試”和“基準(zhǔn)測試”兩種方案
-
單元測試——測試和驗證代碼的框架
– 1) 單元測試命令行
– 2) 運行指定單元測試用例
– 3) 標(biāo)記單元測試結(jié)果
– 4) 單元測試日志 -
基準(zhǔn)測試——獲得代碼內(nèi)存占用和運行效率的性能數(shù)據(jù)
– 1) 基礎(chǔ)測試基本使用
– 2) 基準(zhǔn)測試原理
– 3) 自定義測試時間
– 4) 測試內(nèi)存
– 5) 控制計時器
9、go pprof命令(性能分析命令)
go pprof 可以幫助開發(fā)者快速分析及定位各種性能問題,如 CPU 消耗、內(nèi)存分配及阻塞分析。
性能分析首先需要使用 runtime.pprof 包嵌入到待分析程序的入口和結(jié)束處。runtime.pprof 包在運行時對程序進行每秒 100 次的采樣,最少采樣 1 秒。然后將生成的數(shù)據(jù)輸出,讓開發(fā)者寫入文件或者其他媒介上進行分析。
go pprof 工具鏈配合 Graphviz 圖形化工具可以將 runtime.pprof 包生成的數(shù)據(jù)轉(zhuǎn)換為 PDF 格式,以圖片的方式展示程序的性能分析結(jié)果。
- 安裝第三方圖形化顯式分析數(shù)據(jù)工具(Graphviz)
- 安裝第三方性能分析來分析代碼包
總結(jié)
以上是生活随笔為你收集整理的Go开发 之 Go的 9个 基本命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 时钟总结
- 下一篇: 紫魔法师 (思维 图论 dfs)