国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go語言中一些不常見的命令參數詳解

2020-04-01 19:00:52
字體:
來源:轉載
供稿:網友

前言

這篇文章可能會有些偏見。這篇文章描述了個人會用到的Go工具參數,還有一些是我周圍的人遇到的問題。如果有問題大家可以留言,你是剛開始使用Go工具么?或者你想擴展知識?這篇文章將會描述每個人都需要知道的Go工具參數。下面話不多說了,來一看看詳細的介紹吧。

$ go build -x

-x會列出來go build調用到的所有命令。

如果你對Go的工具鏈好奇,或者使用了一個跨C編譯器,并且想知道調用外部編譯器用到的具體參數,或者懷疑鏈接器有bug;使用-x來查看所有調用。

$ go build -xWORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754mkdir -p $WORK/hello/perf/_obj/mkdir -p $WORK/hello/perf/_obj/exe/cd /Users/jbd/src/hello/perf/Users/jbd/go/pkg/tool/darwin_amd64/compile -o $WORK/hello/perf.a -trimpath $WORK -p main -complete -buildid bbf8e880e7dd4114f42a7f57717f9ea5cc1dd18d -D _/Users/jbd/src/hello/perf -I $WORK -pack ./perf.gocd ./Users/jbd/go/pkg/tool/darwin_amd64/link -o $WORK/hello/perf/_obj/exe/a.out -L $WORK -extld=clang -buildmode=exe -buildid=bbf8e880e7dd4114f42a7f57717f9ea5cc1dd18d $WORK/hello/perf.amv $WORK/hello/perf/_obj/exe/a.out perf $ go build -gcflags

這個參數將會傳遞給編譯器。go tool compile -help列出來了所有我們可以傳遞給編譯器的參數。

例如,禁用編譯器優化和內聯優化,你可以使用下面的參數:

$ go build -gcflags="-N -I"

$ go test -v

這個命令可以為測試提供完整的輸出。它會打印測試名稱、狀態(成功或者失敗)、測試所耗費的時間,還有測試的日志等等。

如果不使用-v參數來測試,輸出很少很多,我經常使用-v參數來打開詳細測試日志。例子:

$ go test -v context=== RUN TestBackground--- PASS: TestBackground (0.00s)=== RUN TestTODO--- PASS: TestTODO (0.00s)=== RUN TestWithCancel--- PASS: TestWithCancel (0.10s)=== RUN TestParentFinishesChild--- PASS: TestParentFinishesChild (0.00s)=== RUN TestChildFinishesFirst--- PASS: TestChildFinishesFirst (0.00s)=== RUN TestDeadline--- PASS: TestDeadline (0.16s)=== RUN TestTimeout--- PASS: TestTimeout (0.16s)=== RUN TestCanceledTimeout--- PASS: TestCanceledTimeout (0.10s)...PASSok context 2.426s

$ go test -race

現在可以使用Go工具提供的-race參數進行競爭檢測。它會檢測并報告競爭。開發的過程中用這個命令來檢測一下。

注:完整的命令是:

$ go test -race mypkg // to test the package$ go run -race mysrc.go // to run the source file$ go build -race mycmd // to build the command

$ go test -run

你可以在測試的時候通過-run參數來正則匹配過濾需要測試的代碼。下面的命令只會運行test examples。

$ go test -run=Example

$ go test -coverprofile

當測試一個包的時候,可以輸出一個測試覆蓋率,然后使用命令go tool來在瀏覽器里面可視化。

$ go test -coverprofile=c.out && go tool cover -html=c.out

注:測試fmt包

go test -coverprofile=c.out fmt

$ go test -exec

一般很少有人知道Go的這個功能,你可以通過-exec插入另一個程序。這個參數允許通過Go工具完成一些外部工作。

一個常見的需求場景是你需要在一些宿主機上面執行一些測試。我們可以通過-exec命令調用adb命令來把二進制文件導入安卓設備并且可以收集到結果信息。參考這個來在安卓設備上面執行。

$ go get -u

如果你通過go get命令獲取Go包,而這個包已經存在于本地的GOPATH,那么這個命令并不會幫你更新包。-u可以強制更新到最新版。

如果你是一個庫作者,你最好在你的安裝說明上加上-u參數,例如,golint是這么做的:

$ go get -u github.com/golang/lint/golint

$ go get -d

如果你想clone一個代碼倉庫到GOPATH里面,跳過編譯和安裝環節,使用-d參數。這樣它只會下載包并且在編譯和安裝之前停止。

當需要clone虛擬網址代碼倉庫的時候,我經常使用這個命令來代替git clone,因為這樣可以把Go代碼自動放入合適的目錄下面。例如:

$ go get -d golang.org/x/oauth2/...

這樣可以克隆到$GOPATH/src/golang.org/x/ouath2目錄下面。假設golang.org/x/oauth2是一個虛擬網址,通過go get獲取這個代碼倉庫要比找出倉庫的真實地址(go.googlesource.com/oauth2)更簡單。

$ go get -t

如果你的測試包的有附加的依賴包,-t可以一并下載測試包的依賴包。如果沒有加這個參數,go get只會下載非測試包的依賴包。

$ go list -f

這個命令可以列出來Go的所有包,并且可以指定格式。這個寫腳本的時候很有用。

下面這個命令將會打印所有依賴的runtime包

go list -f ‘' runtime [runtime/internal/atomic runtime/internal/sys unsafe]

參考鏈接:

http://blog.csdn.net/erlib/article/details/52703165

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九台市| 孝感市| 兴海县| 辽源市| 广昌县| 连州市| 海原县| 二连浩特市| 新邵县| 克拉玛依市| 宁阳县| 岚皋县| 望都县| 慈溪市| 昌平区| 榆树市| 美姑县| 尉氏县| 仙桃市| 太仓市| 合作市| 德安县| 阿合奇县| 高密市| 腾冲县| 正镶白旗| 东兰县| 黄龙县| 达孜县| 青河县| 潞城市| 成都市| 泰顺县| 孙吴县| 贞丰县| 沽源县| 阿拉尔市| 巩留县| 娄底市| 潮安县| 夏津县|