Go標準命令

2021-09-27 12:22:18 字數 4587 閱讀 2208

1.bug在瀏覽器中開啟github的golang專案,可以提交bug報告。

$ go bug

2.build編譯專案和檔案

# 交叉編譯

$ cgo_enabled=0 goos=darwin goarch=amd64 go build -o demo.darwin.amd64

$ cgo_enabled=0 goos=linux goarch=amd64 go build -o demo.linux.amd64

3.clean清理生成的可執行檔案和包(不支援自定義的編譯檔名)

-i 清除關聯的安裝的包和可執行檔案,也就是通過go install安裝的檔案   

-n 把需要執行的清除命令列印出來,但是不執行,這樣就可以很容易的知道底層是如何執行的

-r 迴圈的清除在import中引入的包

-x 列印出來執行的詳細命令,其實就是-n列印的執行版本

$ go clean -x    #檢視會執行什麼命令

4.doc檢視包結構原始碼注釋。跟ide中轉到宣告等效

$ go doc 包名.成員名    #成員可以是常量、變數、結構體、函式、方法...
$ go doc builtin

#檢視內建包builtin的包結構

$ go doc http.request #http包的request結構體

$ go doc repo.getorderbyid #檢視自定義成員資訊

5.env列印go語言的環境資訊

名稱說明

cgo_enabled

指明cgo工具是否可用的標識

goarch

程式構建環境的目標計算架構

gobin

存放可執行檔案的目錄的絕對路徑

gochar

程式構建環境的目標計算架構的單字元標識

goexe

可執行檔案的字尾

gohostarch

程式執行環境的目標計算架構

goos

程式構建環境的目標作業系統

gohostos

程式執行環境的目標作業系統

gopath

工作區目錄的絕對路徑

gorace

用於資料競爭檢測的相關選項

goroot

go語言的安裝目錄的絕對路徑

gotooldir

go工具目錄的絕對路徑

6.fix將指定**包的舊**修正為新**。檢視參考文章

7.fmt格式化原始碼檔案 檢視參考文章

$ go fmt main.go

8.generate掃瞄原始碼檔案,找出"//go:generate"的特殊注釋1

,提取並執行該注釋後面的命令。檢視參考文章

有幾點需要注意:

該特殊注釋必須在.go原始碼檔案中。

每個原始碼檔案可以包含多個generate特殊注釋時。

顯示執行go generate命令時,才會執行特殊注釋後面的命令。

命令序列執行的,如果出錯,就終止後面的執行。

特殊注釋必須以"//go:generate"開頭,雙斜線後面沒有空格。

應用在有些場景下,我們會使用go generate:

yacc:從 .y 檔案生成 .go 檔案。

protobufs:從 protocol buffer 定義檔案(.proto)生成 .pb.go 檔案。

unicode:從 unicodedata.txt 生成 unicode 表。

html:將 html 檔案嵌入到 go 原始碼 。

bindata:將形如 jpeg 這樣的檔案轉成 go **中的位元組陣列。

再比如:

string方法:為類似列舉常量這樣的型別生成string()方法。

巨集:為既定的泛型包生成特定的實現,比如用於ints的sort.ints。

9.getdownload and install packages and dependencies

-f 只有在你包含了-u引數的時候才有效,不讓-u去驗證import中的每乙個都已經獲取了,這對於本地fork的包特別有用

-fix 在獲取原始碼之後先執行fix,然後再去做其他的事情

-u 強制使用網路去更新包和它的依賴包

-v 顯示執行的命令

10.install編譯安裝

11.list檢視包路徑、名稱、匯入項、**檔案,測試檔案,依賴項等資訊。

12.mod模組管理。檢視參考文章

13.run執行go程式

-v:列出被編譯的**包的名稱

-a -v:列出所有被編譯的**包的名稱

-p n:並行編譯,其中n為並行的數量 如-p 2

-n:列印編譯過程中所需執行的命令,但並不執行這些命令

-x:列印編譯過程中所需執行的命令,並執行這些命令

-work:顯示編譯時建立的臨時工作目錄的路徑,並且不刪除這個臨時工作目錄

# -n 顯示執行過程;-p:

$ go run showds.go -p ~/golang/goc2p

14.test單元測試

-bench regexp 執行相應的benchmarks,例如 -bench=.

-cover 開啟測試覆蓋率

-run regexp 只執行regexp匹配的函式,例如 -run=array 那麼就執行包含有array開頭的函式

-v 顯示測試的詳細命令

$ go test demo_test.go demo.go           # 單元測試

$ go test --cover demo_test.go demo.go # 單元測試覆蓋率

$ go test -bench=. demo_test.go demo.go # 效能測試

15.tool執行指定的go工具, 如:go tool pprof

16.version列印golang版本資訊

17.vet用於檢查靜態錯誤,即編譯不易發現等錯誤。檢視參考文章

$ go tool vet 
func

main()

for_

, word :=

range words ()

}}

18.godoc用於展示指定**包的文件

$ godoc fmt

$ godoc fmt printf

$ godoc fmt printf println

$ godoc -src fmt printf

$ godoc cmd/go

$ godoc -http=:9999 #啟動$goroot\doc下的幫助站點

19.help幫助命令

$ go help modules

$ go help vet

參考:

go的註解只是特殊的注釋約定,如deprecated表示**已不被推薦使用;todo可以快速定位到代辦項; ↩︎

Go命令教程 1 標準命令詳解

go 語言的 1.5 版本在標準命令方面有了重大變更。這倒不是說它們的用法有多大的變化,而是說它們的底層支援已經大變樣了。讓我們先來對比一下 goroot pkg tool 平台相關目錄 中的內容。以下簡稱此目錄為 go 工具目錄。插播 平台相關目錄即以 命名的目錄,用於存放因特定平台的不同而不同的...

go標準命令詳解0 4 go clean

執行go clean命令會刪除掉執行其它命令時產生的一些檔案和目錄,包括 在使用go build命令時在當前 包下生成的與包名同名或者與go原始碼檔案同名的可執行檔案。在windows下,則是與包名同名或者go原始碼檔案同名且帶有 exe 字尾的檔案。在執行go test命令並加入 c標記時在當前 ...

go標準命令詳解0 7 go test

go test命令用於對go語言編寫的程式進行測試。這種測試是以 包為單位的。當然,這還需要測試原始碼檔案的幫助。關於怎樣編寫並寫好go程式測試 我們會在本章的第二節加以詳述。在這裡,我們只討論怎樣使用命令啟動測試。go test命令會自動測試每乙個指定的 包。當然,前提是指定的 包中存在測試原始碼...