Go 基本命令

2021-07-09 03:57:15 字數 3509 閱讀 5571

go build

如果是main包,當你執行go build之後,它就會在當前目錄下生成乙個可執行檔案。如果你需要在$gopath/bin下生成相應的檔案,需要執行go install,或者使用go build -o 路徑/a.exe

如果某個專案資料夾下有多個檔案,而你只想編譯某個檔案,就可在go build之後加上檔名,例如go build a.gogo build命令缺省會編譯當前目錄下的所有go檔案。

(注:實際上,package名在go語言規範中指**中「package」後使用的名稱,此名稱可以與資料夾名不同。預設生成的可執行檔名是資料夾名。)

go build會忽略目錄下以「_」或「.」開頭的go檔案。

如果你的源**針對不同的作業系統需要不同的處理,那麼你可以根據不同的作業系統字尾來命名檔案。例如有乙個讀取陣列的程式,它對於不同的作業系統可能有如下幾個原始檔:

array_linux.go array_darwin.go array_windows.go array_freebsd.go

go build的時候會選擇性地編譯以系統名結尾的檔案(linux、darwin、windows、freebsd)。例如linux系統下面編譯只會選擇array_linux.go檔案,其它系統命名字尾檔案全部忽略。

-i安裝相應的包,編譯+go install-a更新全部已經是最新的包的,但是對標準包不適用

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

-p n指定可以並行可執行的編譯數目,預設是cpu數目

-race開啟編譯的時候自動檢測資料競爭的情況,目前只支援64位的機器

-v列印出來我們正在編譯的包名

-work列印出來編譯時候的臨時資料夾名稱,並且如果已經存在的話就不要刪除

-x列印出來執行的命令,其實就是和-n的結果類似,只是這個會執行

-ccflags 'arg list'傳遞引數給5c, 6c, 8c 呼叫

-compiler name指定相應的編譯器,gccgo還是gc

-gccgoflags 'arg list'傳遞引數給gccgo編譯連線呼叫

-gcflags 'arg list'傳遞引數給5g, 6g, 8g 呼叫

-installsuffix suffix為了和預設的安裝包區別開來,採用這個字首來重新安裝那些依賴的包,-race的時候預設已經是-installsuffix race,大家可以通過-n命令來驗證

-ldflags 'flag list'傳遞引數給5l, 6l, 8l 呼叫

-tags 'tag list'設定在編譯的時候可以適配的那些tag,詳細的tag限制參考裡面的 build constraints

go clean

_test/ 舊的test目錄,由makefiles遺留

_testmain.go 舊的gotest檔案,由makefiles遺留

test.out 舊的test記錄,由makefiles遺留

build.out 舊的test記錄,由makefiles遺留

*.[568ao] object檔案,由makefiles遺留

dir(.exe) 由go build產生

dir.test(.exe) 由go test -c產生

mainfile(.exe) 由go build mainfile.go產生

*.so 由 swig 產生

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

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

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

go fmt

-w把改寫後的內容直接寫入到檔案中,而不是作為結果列印到標準輸出。

-r新增形如「a[b:len(a)] -> a[b:]」的重寫規則,方便我們做批量替換

-s簡化檔案中的**

-d顯示格式化前後的diff而不是寫入檔案,預設是false

-e列印所有的語法錯誤到標準輸出。如果不使用此標記,則只會列印不同行的前10個錯誤。

-cpuprofile支援除錯模式,寫入相應的cpufile到指定的檔案

go get

github (git)

google code project hosting (git, mercurial, subversion)

launchpad (bazaar)

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

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

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

-v顯示執行的命令

go install

go test

fail archive/zip 0.022s

ok compress/gzip 0.033s...

-cover開啟測試覆蓋率

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

-v顯示測試的詳細命令

go tool

go tool vet directory|files用來分析當前目錄的**是否都是正確的**,例如是不是呼叫fmt.printf裡面的引數不正確,例如函式裡面提前return了然後出現了無用**之類的。

go generate

$ go build

$ go test

godoc

其它命令

go env 檢視當前go的環境變數

go list 列出當前全部安裝的package

go run 編譯並執行go程式

go基本命令

go1.9後預設利用go語言的併發特性進行函式粒度的併發編譯。go語言的程式編寫基本以原始碼方式,無論是自己的 還是三方 並且以gopath作為工作目錄和一套完整的工程目錄規則。主要用於編譯 在包的編譯過程中,若有必要,會同時編譯與之相關聯的包。無引數編譯 檔案列表編譯 指定包編譯 使用這些方法都可...

go基本命令和包解析

b 命令 b 在命令列或終端輸入 go 即可檢視所有支援的命令 b 常用命令簡介 b go get 獲取遠端包 需安裝git或hg go run 直接執行程式 go build 測試編譯,檢查是否有編譯錯誤 go fmt 格式化原始碼 部分ide在儲存時自動呼叫 go install 編譯包檔案並編...

06 Go語言基本命令

以windows為例,在dos視窗輸入go 1 go is a tool for managing go source code.2usage 3go command arguments 4the commands are 5 build compile packages and dependenc...