go build
如果是main
包,當你執行go build
之後,它就會在當前目錄下生成乙個可執行檔案。如果你需要在$gopath/bin
下生成相應的檔案,需要執行go install
,或者使用go build -o 路徑/a.exe
。
如果某個專案資料夾下有多個檔案,而你只想編譯某個檔案,就可在go build
之後加上檔名,例如go build a.go
;go 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...