go語言學習-常用命令

gxyz發表於2018-03-25

前面的文章中記錄了安裝 golang 和配置開發環境,本文將學習的 go 命令列命令以及使用場景。

檢視可用命令

直接在終端中輸入 go help 即可顯示所有的 go 命令以及相應命令功能簡介,主要有下面這些:

  • build: 編譯包和依賴
  • clean: 移除物件檔案
  • doc: 顯示包或者符號的文件
  • env: 列印go的環境資訊
  • bug: 啟動錯誤報告
  • fix: 執行go tool fix
  • fmt: 執行gofmt進行格式化
  • generate: 從processing source生成go檔案
  • get: 下載並安裝包和依賴
  • install: 編譯並安裝包和依賴
  • list: 列出包
  • run: 編譯並執行go程式
  • test: 執行測試
  • tool: 執行go提供的工具
  • version: 顯示go的版本
  • vet: 執行go tool vet

命令的使用方式為: go command [args], 除此之外,可以使用go help <command> 來顯示指定命令的更多幫助資訊。

在執行 go help 時,不僅僅列印了這些命令的基本資訊,還給出了一些概念的幫助資訊:

  • c: Go和c的相互呼叫
  • buildmode: 構建模式的描述
  • filetype: 檔案型別
  • gopath: GOPATH環境變數
  • environment: 環境變數
  • importpath: 匯入路徑語法
  • packages: 包列表的描述
  • testflag: 測試符號描述
  • testfunc: 測試函式描述

同樣使用 go help <topic>來檢視這些概念的的資訊。

build 和 run 命令

就像其他靜態型別語言一樣,要執行 go 程式,需要先編譯,然後在執行產生的可執行檔案。go build 命令就是用來編譯 go程式生成可執行檔案的。但並不是所以的 go 程式都可以編譯生成可執行檔案的, 要生成可執行檔案,go程式需要滿足兩個條件:

  • 該go程式需要屬於main包
  • 在main包中必須還得包含main函式

也就是說go程式的入口就是 main.main, 即main包下的main函式, 例子(hello.go):

package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

編譯hello.go,然後執行可執行程式:

$ go run hello.go   # 將會生成可執行檔案 hello
$ ./hello           # 執行可執行檔案
Hello World!

上面就是 go build 的基本用法,另外如果使用 go build 編譯的不是一個可執行程式,而是一個包,那麼將不會生成可執行檔案。

go run 命令可以將上面兩步併為一步執行(不會產生中間檔案)。

$ go run hello.go
Hello World!

上面兩個命令都是在開發中非常常用的。

此外 go clean 命令,可以用於將清除產生的可執行程式:

$ go clean    # 不加引數,可以刪除當前目錄下的所有可執行檔案
$ go clean sourcefile.go  # 會刪除對應的可執行檔案

fmt 和 doc 命令

go 語言有一個褒貶不一的特性,就是對格式的要求很嚴格,我是很喜歡這個特性的,因為可以保持程式碼的清晰一致,編譯組合開發,並且go還提供了一個非常強大的工具來格式化程式碼,它就是 go fmt sourcefile.go, 不過通常其實不需要我們手動呼叫,各種編輯器都可以幫助我們自動完成格式化。

go doc 命令可以方便我們快速檢視包文件,go doc package 命令將會在終端中列印出指定 package 的文件。

另外有一個與 go doc 命令相關的命令是 godoc, 可以通過它啟動我們自己的文件伺服器:

godoc -http=:8080

然後我們就可與在瀏覽器localhost:8080中檢視go文件了

get 命令

這個命令同樣也是很常用的,我們可以使用它來下載並安裝第三方包, 使用方式:

go get src

從指定源上面下載或者更新指定的程式碼和依賴,並對他們進行編譯和安裝,例如我們想使用 beego 來開發web應用,我們首先就需要獲取 beego:

go get github.com/astaxie/beego

這條命令將會自動下載安裝 beego 以及它的依賴,然後我們就可以使用下面的方式使用:

package main

import "github.com/astaxie/beego"   # 這裡需要使用 src 下的完整路徑

func main() {
    beego.Run()
}

install 命令

用來編譯和安裝go程式,我們可以將它與 build 命令對比:

install build
生成的可執行檔案路徑 工作目錄下的bin目錄下 當前目錄下
可執行檔案的名字 與原始碼所在目錄同名 預設與源程式同名,可以使用-o選項指定
依賴 將依賴的包放到工作目錄下的pkg資料夾下 -

test 命令

顧名思義,用來執行測試的命令,這種測試是以包為單位的。需要遵循一定規則:

  • 測試原始檔是名稱以“_test.go”為字尾的
  • 測試原始檔內含若干測試函式的原始碼檔案
  • 測試函式一般是以“Test”為名稱字首, 並有一個型別為“testing.T”的引數。

其他命令

其他命令不會經常使用,這裡就不介紹了,真的用到的時候,直接使用 go help command 即可檢視相關命令。

相關文章