golang 內置命令

命令列表

	build       compile packages and dependencies
	clean       remove object files
	doc         show documentation for package or symbol
	env         print Go environment information
	bug         start a bug report
	fix         run go tool fix on packages
	fmt         run gofmt on package sources
	generate    generate Go files by processing source
	get         download and install packages and dependencies
	install     compile and install packages and dependencies
	list        list packages
	run         compile and run Go program
	test        test packages
	tool        run specified go tool
	version     print Go version
	vet         run go tool vet on packages

go build

  • 如果目標包裏有 main 包,就會生成二進制文件

    • 如果沒有 main 包,build 指令僅僅用來檢查編譯是否可以通過,編譯完成後會丟棄編譯時生成的所有臨時包對象
  • 默認在當前目錄下生成二進制文件

    • 使用-o 參數顯式指定路徑和文件名
  • 默認作用範圍爲當前文件夾

    • 也可以顯式指定目錄編譯
      • go build ~/go/src/github.com/xxx/xxx
    • ...遞歸編譯目錄下的所有包
      • go build flysnow.org/tools/...編譯tools目錄下的所有包
  • -race參數開啓競爭檢測

  • 跨平臺編譯

    • GOOS=linux GOARCH=amd64 go build
  • 條件編譯

    • 只支持文件級別的條件編譯
    • 方法一: 文件開頭的編譯標籤
      • 編譯標籤需要和下面的包聲明(例如package main)用空行隔開
        • 否則會被視爲包聲明的註釋
      • 一行內的所有條件爲的關係
        • 例如// +build dawin freebsd
      • 每一行之間的條件爲的關係
      • !爲在該平臺不編譯
        • // +build !linux
      • 上述條件編譯時自動觸發的,我們還可以通過tag手動觸發
        • 文件:// +build jsoniter
        • 命令:go build -tag=jsoniter
    • 方法二:文件後綴
      • 如果你的源文件包含_$GOOS.go或者_$GOARCH.go後綴,那麼這個源文件只會在這個平臺/系統下編譯
      • 這兩個後綴可以結合在一起使用,但是要注意順序
        • _$GOOS_$GOARCH.go
        • 不能反過來用_$GOARCH_$GOOS.go
    • 參考:https://blog.csdn.net/varding/article/details/12675971

go install

  • 編譯並安裝文件,即比build多一個安裝的步驟

  • 安裝到bin或pkg目錄下

    • 含有main包文件(生成可執行文件)會被安裝到$GOPATH/bin目錄下
    • 普通包文件(生成.a文件)安裝到$GOPATH/pkg/$GOOS/目錄下
  • 當存在多個GOPATH目錄時,只有第一個目錄有效

go run

  • 編譯和執行程序,不生成文件
  • 必須要包含main函數的文件作爲參數

go get

  • 獲取遠程代碼包並安裝
    • 非mod模式源代碼會被下載到$GOPATH/src目錄下
    • mod模式下源代碼會下載到$GOPATH/pkg/mod目錄下
  • -v 顯示過程
  • -u 強制用網絡更新
  • -d 只下載,不安裝到/bin或/pkg
  • go get 會自動檢測和安裝該代碼的所有依賴包
    • 爲了獲得一個項目的所有依賴,不要使用git clone,而使用go get
# 下載目錄下的所有依賴
go get -d -v ./...

go help

  • 查看內置命令使用幫助
    • 例如go help build

go env

  • 不加參數即爲查看環境參數
  • -w 設置全局環境變量
    • 例如 go env -w GOBIN=$HOME/bin

go vet

  • 靜態代碼檢查

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章