Go編譯工具
go build <編譯文件>
附加參數 | 備 注 |
---|---|
-v | 編譯時顯示包名 |
-p n | 開啟並發編譯,默認情況下該值為 CPU 邏輯核數 |
-a | 強制重新構建 |
-n | 打印編譯時會用到的所有命令,但不真正執行 |
-x | 打印編譯時會用到的所有命令 |
-race | 開啟競態檢測 |
# 無參數模式
$ go build
# build 多文件
$ go build f1.go f2.go ...
$ go build .
# build 特定包
$ go build package/xxx
go clean <清除編譯文件>
附加參數 | 備 注 |
---|---|
-i | 清除關聯的安裝的包和可運行文件,也就是通過go install 安裝的文件 |
-n | 把需要執行的清除命令打印出來,但是不執行,這樣就可以很容易的知道底層是如何運行的; |
-r | 循環的清除在 import 中引入的包 |
-x | 打印出來執行的詳細命令,其實就是 -n 打印的執行版本 |
-cache | 刪除所有go build 命令的緩存 |
-testcache | 刪除當前包所有的測試結果 |
go run <運行不產生編譯文件>
go run
不會在運行目錄下生成任何文件,可執行文件被放在臨時文件中被執行,工作目錄被設置為當前目錄。在go run
的后部可以添加參數,這部分參數會作為代碼可以接受的命令行輸入提供給程序
go run
不能使用“go run+包”的方式進行編譯,如需快速編譯運行包,需要使用如下步驟來代替:
- 使用
go build
生成可執行文件。 - 運行可執行文件。
gofmt <格式化代碼>
標記名稱 | 標記描述 |
---|---|
-l | 僅把那些不符合格式化規范的、需要被命令程序改寫的源碼文件的絕對路徑打印到標准輸出。而不是把改寫后的全部內容都打印到標准輸出。 |
-w | 把改寫后的內容直接寫入到文件中,而不是作為結果打印到標准輸出。 |
-r | 添加形如“a[b:len(a)] -> a[b:]”的重寫規則。如果我們需要自定義某些額外的格式化規則,就需要用到它。 |
-s | 簡化文件中的代碼。 |
-d | 只把改寫前后內容的對比信息作為結果打印到標准輸出。而不是把改寫后的全部內容都打印到標准輸出。 命令程序將使用 diff 命令對內容進行比對。在 Windows 操作系統下可能沒有 diff 命令,需要另行安裝。 |
-e | 打印所有的語法錯誤到標准輸出。如果不使用此標記,則只會打印每行的第 1 個錯誤且只打印前 10 個錯誤。 |
-comments | 是否保留源碼文件中的注釋。在默認情況下,此標記會被隱式的使用,並且值為 true。 |
-tabwidth | 此標記用於設置代碼中縮進所使用的空格數量,默認值為 8。要使此標記生效,需要使用“-tabs”標記並把值設置為 false。 |
-tabs | 是否使用 tab('\t')來代替空格表示縮進。在默認情況下,此標記會被隱式的使用,並且值為 true。 |
-cpuprofile | 是否開啟 CPU 使用情況記錄,並將記錄內容保存在此標記值所指的文件中。 |
go install <編譯安裝>
$ go install
# go install 是建立在 GOPATH 上的,無法在獨立的目錄里使用 go install。
# GOPATH 下的 bin 目錄放置的是使用 go install 生成的可執行文件,可執行文件的名稱來自於編譯時的包名。
# go install 輸出目錄始終為 GOPATH 下的 bin 目錄,無法使用-o附加參數進行自定義。
# GOPATH 下的 pkg 目錄放置的是編譯期間的中間文件。
go get <安裝依賴>
附加參數 | 備 注 | |
---|---|---|
-v | 顯示操作流程的日志及信息,方便檢查錯誤 | |
-u | 下載丟失的包,但不會更新已經存在的包 | |
-d | 只下載,不安裝 | |
-insecure | 允許使用不安全的 HTTP 方式進行下載操作 | |
-f | 只有在你包含了 -u 參數的時候才有效,不讓 -u 去驗證 import 中的每一個都已經獲取了,這對於本地 fork 的包特別有用 | |
-fix | 在獲取源碼之后先運行 fix,然后再去做其他的事情 | |
-t | 同時也下載需要為運行測試所需要的包 |
go generate <編譯前自動執行代碼>
使用go generate
命令時有以下幾點需要注意:
- 該特殊注釋必須在 .go 源碼文件中;
- 每個源碼文件可以包含多個 generate 特殊注釋;
- 運行
go generate
命令時,才會執行特殊注釋后面的命令; - 當
go generate
命令執行出錯時,將終止程序的運行; - 特殊注釋必須以
//go:generate
開頭,雙斜線后面沒有空格。
go generate
命令格式如下所示:
go generate [-run regexp] [-n] [-v] [-x] [command] [build flags] [file.go... | packages]
- -run 正則表達式匹配命令行,僅執行匹配的命令;
- -v 輸出被處理的包名和源文件名;
- -n 顯示不執行命令;
- -x 顯示並執行命令;
- command 可以是在環境變量 PATH 中的任何命令。
執行go generate
命令時,也可以使用一些環境變量,如下所示:
- $GOARCH 體系架構(arm、amd64 等);
- $GOOS 當前的 OS 環境(linux、windows 等);
- $GOFILE 當前處理中的文件名;
- $GOLINE 當前命令在文件中的行號;
- $GOPACKAGE 當前處理文件的包名;
- $DOLLAR 固定的
$
,不清楚具體用途。