欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年12月06日 17:11:12   作者:John  
這篇文章主要給大家介紹了關(guān)于Go語言中一些不常見的命令參數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

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

$ go build -x

-x會列出來go build調(diào)用到的所有命令。

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

$ go build -x
WORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754
mkdir -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.go
cd .
/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.a
mv $WORK/hello/perf/_obj/exe/a.out perf
 
$ go build -gcflags

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

例如,禁用編譯器優(yōu)化和內(nèi)聯(lián)優(yōu)化,你可以使用下面的參數(shù):

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

$ go test -v

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

如果不使用-v參數(shù)來測試,輸出很少很多,我經(jīng)常使用-v參數(shù)來打開詳細(xì)測試日志。例子:

$ 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)
...
PASS
ok context 2.426s

$ go test -race

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

注:完整的命令是:

$ 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參數(shù)來正則匹配過濾需要測試的代碼。下面的命令只會運行test examples。

$ go test -run=Example

$ go test -coverprofile

當(dāng)測試一個包的時候,可以輸出一個測試覆蓋率,然后使用命令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插入另一個程序。這個參數(shù)允許通過Go工具完成一些外部工作。

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

$ go get -u

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

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

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

$ go get -d

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

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

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

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

$ go get -t

如果你的測試包的有附加的依賴包,-t可以一并下載測試包的依賴包。如果沒有加這個參數(shù),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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Go1.20?arena新特性示例詳解

    Go1.20?arena新特性示例詳解

    這篇文章主要為大家介紹了Go1.20?arena新特性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Go?分布式鏈路追蹤實現(xiàn)原理解析

    Go?分布式鏈路追蹤實現(xiàn)原理解析

    分布式鏈路追蹤作為解決分布式應(yīng)用可觀測問題的重要技術(shù),愈發(fā)成為分布式應(yīng)用不可缺少的基礎(chǔ)設(shè)施,本文將詳細(xì)介紹分布式鏈路的核心概念、架構(gòu)原理和相關(guān)開源標(biāo)準(zhǔn)協(xié)議,并分享我們在實現(xiàn)無侵入 Go 采集 Sdk 方面的一些實踐,需要的朋友可以參考下
    2022-06-06
  • 7分鐘讀懂Go的臨時對象池pool以及其應(yīng)用場景

    7分鐘讀懂Go的臨時對象池pool以及其應(yīng)用場景

    這篇文章主要給大家介紹了關(guān)于如何通過7分鐘讀懂Go的臨時對象池pool以及其應(yīng)用場景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或使用Go具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-11-11
  • Go初學(xué)者踩坑之go?mod?init與自定義包的使用

    Go初學(xué)者踩坑之go?mod?init與自定義包的使用

    go?mod是go的一個模塊管理工具,用來代替?zhèn)鹘y(tǒng)的GOPATH方案,下面這篇文章主要給大家介紹了關(guān)于Go初學(xué)者踩坑之go?mod?init與自定義包的使用,需要的朋友可以參考下
    2022-10-10
  • golang中的空slice案例

    golang中的空slice案例

    這篇文章主要介紹了golang中的空slice案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang map與sync.map的異同詳解

    Golang map與sync.map的異同詳解

    在Go語言中,map和sync.Map都是用于存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),但它們在并發(fā)安全性、性能和使用場景上存在顯著差異,接下來將深入探討這兩種數(shù)據(jù)結(jié)構(gòu)的異同,感興趣的朋友可以參考下
    2024-01-01
  • Golang空結(jié)構(gòu)體struct{}用途,你知道嗎

    Golang空結(jié)構(gòu)體struct{}用途,你知道嗎

    這篇文章主要介紹了Golang空結(jié)構(gòu)體struct{}用途,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Go?多環(huán)境下配置管理方案(多種方案)

    Go?多環(huán)境下配置管理方案(多種方案)

    這篇文章主要介紹了Go?多環(huán)境下配置管理方案,方案一配置文件管理,方案二集中式管理配置,每種方案給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Go和Java算法詳析之分?jǐn)?shù)到小數(shù)

    Go和Java算法詳析之分?jǐn)?shù)到小數(shù)

    這篇文章主要給大家介紹了關(guān)于Go和Java算法詳析之分?jǐn)?shù)到小數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-08-08
  • go語言LeetCode題解1030距離順序排列矩陣單元格

    go語言LeetCode題解1030距離順序排列矩陣單元格

    這篇文章主要為大家介紹了go語言LeetCode題解1030距離順序排列矩陣單元格,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12

最新評論