一、GO命令一覽git
GO提供了不少命令,包括打包、格式化代碼、文檔生成、下載第三方包等等諸多功能,咱們能夠經過在控制檯下執行 go 來查看內置的全部命令github
下面來逐個介紹,也能夠詳細參考 https://github.com/hyper-carrot/go_command_tutorialshell
二、go buildjson
這個命令能夠直接使用,也能夠帶上代碼包或源碼文件使用。windows
若是是直接使用,表示試圖編譯當前目錄所對應的代碼包,若是當前目錄不是一個有效的代碼包(包含在 $GOPATH/src 目錄下)則會報錯;若是帶上代碼包名,則表示編譯指定的代碼包;若是帶上源碼文件,則表示編譯指定源碼文件。服務器
GO語言的源碼文件分爲三類,包括命令源碼文件、庫源碼 文件和測試源碼文件。若是編譯的是命令源碼文件,或包含命令源碼文件的包(main包)時,編譯經過後會生成可執行文件;反之則不會生成任何文件,只是作檢查性編譯。函數
能夠在執行 go build 命令時,加上一些標記,如:工具
-v 標記,能夠把命令執行過程當中構建的包名(包含編譯過程當中依賴的包)打印出來,若是 go build 的是一個源碼文件,則會打印出的包名爲 command-line-arguments,這是編譯源碼文件時生成的虛擬包名,因此看到不用以爲奇怪。性能
-x 標記,能夠打印編譯期間所用到的全部 shell 命令。單元測試
-o 標記,用來指定生成文件的路徑和名稱。
-a 標記,強制從新編譯。
-buildmode=shared 標記,這個參數能夠指定當前編譯生成的結果類型,如靜態庫和動態庫。GO語言默認使用靜態編譯,好處是部署時很是簡單,但使用動態庫,能夠減小分發包的大小,你們能夠根據實際狀況選擇。注意,目前在windows下尚不支持編譯成動態庫。
更多參數,請使用 go build -h 或 go help build 查看。
三、go install
這個命令用於編譯安裝,能夠做用於 main 包和非 main 包,而後將編譯後的生成的執行文件存放到工程的 bin 目錄下,將生成的歸檔文件(即靜態連接庫)存放到工程的 pkg 目錄下。使用方式相似於 go build,能夠在某個代碼包目錄下直接使用,也能夠指定代碼包使用。
四、go run
編譯並執行,只能做用於命令源碼文件,通常用於開發中快速測試。
五、go clean
該命令能夠刪除執行其它命令時產生的文件和目錄,但我沒有找到刪除 pkg 目錄下的歸檔文件的選項。
六、go test
進行單元測試的工具,單元測試代碼建議與被測試代碼放在同一個代碼包中,並以 "_test.go" 爲後期,測試函數建議以 "Test" 爲名稱前綴。該命令能夠對代碼包進行測試,也能夠指定某個測試代碼文件運行(要一併帶上被測試代碼文件)
七、go get
下載第三方代碼包並編譯安裝 ,須要注意的是,它會下載安裝到 GOPATH 環境變量配置的第一個工做區中。
另外,我發現,若是某一個工做區中(沒必要是GOPATH 環境變量配置的第一個工做區中)已經存在該代碼包,則不會從新下載。
此外,咱們還能夠本身搭建代碼託管網站,有興趣能夠參考:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.3.md
八、go doc
文檔註釋相關,能夠搭建本地GO文檔服務器,包含本身的項目註釋,更多細節請參考:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.5.md
九、go list
不加任何標記直接使用,是顯示指定包的導入路徑,如 go list net/http 就顯示 net/http。
該命令加上 -json 標記能夠顯示完整信息,如:
若是隻想顯示指定信息,可使用 -f 標記,如 go list -f {{.GoFiles}} net/http 能夠顯示 net/http 包中的 GO 源碼文件列表。(因此能夠理解,默認的 go list 至關於 go list -f {{.ImportPath}})
十、go fmt
做用於代碼包,用於格式化代碼包中的代碼格式,注意不包含代碼包中的子代碼包。是 gofmt 的簡單封裝,至關於 gofmt -l -w ,更多信息,請經過 gofmt -h 查看。
十一、go fix
簡單的說,這是一個當GO語言版本升級以後,把代碼包中舊的語法更新成新版本語法的自動化工具。它是 go tool fix 的簡單封裝,它做用於代碼包。當須要升級本身的項目或者升級下載的第三方代碼包,可使用此方法。(下載並升級代碼包可使用 go get -fix 命令 )
十二、go vet
靜態檢查工具,這是個好東西,通常項目快完成時進行進行優化時須要,到時候再詳細研究。
1三、go tool pprof
性能檢查工具,等須要時再詳細研究。詳見:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.12.md
1四、go tool cgo
從 cgo的名字能夠猜出,這是一個跟C語言和GO語言有關的命令,須要時再進行研究。
1五、go env
用於打印GO語言的環境信息,如 GOPATH 是工做區目錄,GOROOT 是GO語言安裝目錄,GOBIN 是經過 go install 命令生成可執行文件的存放目錄(默認是當前工做區的 bin 目錄下),GOEXE 爲生成可執行文件的後綴
1六、轉成彙編代碼
go tool objdump -s "operate\.Login" server
上面的意思是,解析可執行文件server,將其中的 operate 包的 Login 方法轉成彙編代碼。