Go編譯工具命令


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+包”的方式進行編譯,如需快速編譯運行包,需要使用如下步驟來代替:

  1. 使用go build生成可執行文件。
  2. 運行可執行文件。

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 固定的$,不清楚具體用途。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM