Golang中自帶的強大命令工具
在公司已經實習了十多天了,一隻都是在看很多資料、文件、教程、公司專案原始碼,一直都沒有時間寫一些總結的筆記什麼的,馬上就要放春節了就比較輕鬆下來了,試著寫一下Golang中特別好用的Go 命令列工具。
1. 工具總覽
go提供了很多自帶的命令列工具具體有如下幾種:
Go is a tool for managing Go source code. Usage: go <command> [arguments] The commands are: bugstart a bug report buildcompile packages and dependencies cleanremove object files and cached files docshow documentation for package or symbol envprint Go environment information fixupdate packages to use new APIs fmtgofmt (reformat) package sources generategenerate Go files by processing source getdownload and install packages and dependencies installcompile and install packages and dependencies listlist packages or modules modmodule maintenance runcompile and run Go program testtest packages toolrun specified go tool versionprint Go version vetreport likely mistakes in packages
如果我們想要檢視某個命令的詳細情況可以使用命令:
$ go help [command]
這裡我不會全部都講,只會講一些常用的好用的命令。
2. Go工作區結構
我們在安裝go的開發環境的時候是要配置一個go的 $GOPATH
環境變數, $GOPATH
環境變數是Go語言中非常重要也是非常核心的一個配置,這個環境變數有什麼用呢?
目前我也是粗淺的學習了一點Go語言的只是,沒有做過什麼專案。
目前我認識到的 $GOPATH
有這麼幾點用法:
- 在寫Go語言時我們匯入包時候會在GOPATH下的
src
目錄下索引,同時GO也會在$GOROOT
的src
目錄下索引。 - 在使用Go的命令時會把一些檔案往
$GOPATH
目錄下。
目前直觀的感受也就只有這麼多了,可以查考我找到一個老哥寫的Gopath講解: go入門--設定 GOPATH 有什麼意義?
對於大多數的Go語言使用者,只需要配置一個名叫GOPATH的環境變數,用來指定當前工作目錄即可。當需要切換到不同工作區的時候,只要更新GOPATH就可以了。
配置 $GOPATH
環境變數:
- 在~/.bash_profile中新增
export GOPATH=$HOME/gobook export PATH=${PATH}:${GOPATH}/bin
- 使用source命令載入配置配置檔案
source ~/.bash_profile
2.0
Go中還比較重要的就是 $GOPATH
下的三個目錄了:
src pkg bin
其中 src
子目錄用於儲存原始碼。每個包被儲存在與$GOPATH/src的相對路徑為包匯入路徑的子目錄中。
3. go env
上面我們提到了很多的GO語言中需要用的到一些系統環境變數,GO語言中的環境變數是很多的,我們可以使用env命令來檢視這些變數的值。
$ go env ... GOPATH="/home/gopher/gobook" GOROOT="/usr/local/go" GOARCH="amd64" GOOS="darwin" ...
不同的變數有不同的作用,上面列出來的幾個是比較重要的:
- GOOS 程式構建環境的目標作業系統
- GOARCH 表示程式構建環境的目標計算架構
這四個變數在我們編譯go語言的時候會起作用。
4. go get
使用Go語言工具箱的go命令,不僅可以根據包匯入路徑找到本地工作區的包,甚至可以從網際網路上找到和更新包。
使用命令 go get
可以下載一個單一的包或者用 go get
下載整個子目錄裡面的每個包。
一旦 go get
命令下載了包,然後就是安裝包或包對應的可執行的程式。我們將在下一節再關注它的細節,現在只是展示整個下載過程是如何的簡單。
go get命令支援當前流行的託管網站GitHub、Bitbucket和Launchpad,可以直接向它們的版本控制系統請求程式碼。對於其它的網站,你可能需要指定版本控制系統的具體路徑和協議,例如 Git或Mercurial。
go get命令獲取的程式碼是真實的本地儲存倉庫,而不僅僅只是複製原始檔,因此你依然可以使用版本管理工具比較原生代碼的變更或者切換到其它的版本。
一般我們在使用 get
命令的時候我們會使用 -u -v
兩個引數, -u
是表示我們始終使用該包的最新版本, -v
表示我們在終端中打印出詳細的獲取資訊,以免出錯,但是要注意有可能在下載遠端第三方包的時候涉及到科學上網的問題,一般我們可以藉助一個工具叫 gopm
5. go build
build
是go語言用來編譯的命令。
例如: 我們在 $GOPATH/src
目錄下面新建 test
目錄,然後新建檔案main.go,並新增如類容:

然後我們在終端中進入到 $GOPATH/src/test
目錄下面,執行
test$ go build test$ ll total 3920 drwxr-xr-x5 alphababystaff16022 11:28 . drwxr-xr-x12 alphababystaff38421 14:56 .. drwxr-xr-x8 alphababystaff25622 11:27 .idea -rw-r--r--1 alphababystaff7622 11:27 main.go -rwxr-xr-x1 alphababystaff199936822 11:28 test
然後就會在 $GOPATH/src/test
目錄下面生成一個可執行檔案叫做 test
test$ ./test hello world!
常用的又 -o
引數, -o
表示我們指定一個生成的可執行檔案的名稱
test$ go build -o test.exe test$ ll total 7832 drwxr-xr-x6 alphababystaff19222 11:31 . drwxr-xr-x12 alphababystaff38421 14:56 .. drwxr-xr-x8 alphababystaff25622 11:27 .idea -rw-r--r--1 alphababystaff7622 11:27 main.go -rwxr-xr-x1 alphababystaff199936822 11:28 test -rwxr-xr-x1 alphababystaff199936822 11:31 test.exe
可以看到生成了一個 test.exe
的可執行檔案
6. go run
一般我們使用ide來程式設計使用都會有一個執行,這裡go語言給我們提供了這樣的原生功能。
test$ go run main.go hello world!
這樣我們就不用編譯然後再運行了。
7. go fmt
在開發中,有一個良好的同一的程式碼風格是非常好的,這裡go給我一個 fmt
工具自動的可以把我們的程式碼整理為go官方的推薦的風格。
這裡吧我們的程式碼風格給該亂:

然後我們使用 fmt
工具自動整理程式碼風格。
test$ go fmt main.go

可以看到風格就自動的調整了。