鍍金池/ 教程/ GO/ 標(biāo)準(zhǔn)命令詳解
go install
go clean
go list
go test
go doc與godoc
go build
go fix與go tool fix
go tool pprof
go run
go env
go tool cgo
標(biāo)準(zhǔn)命令詳解
go get
go vet與go tool vet

標(biāo)準(zhǔn)命令詳解

Go語言的1.5版本在標(biāo)準(zhǔn)命令方面有了重大變更。這倒不是說它們的用法有多大的變化,而是說它們的底層支持已經(jīng)大變樣了。讓我們先來對比一下$GOROOT/pkg/tool/<平臺相關(guān)目錄>中的內(nèi)容。以下簡稱此目錄為Go工具目錄。

插播:平臺相關(guān)目錄即以_命名的目錄,用于存放因特定平臺的不同而不同的代碼包歸檔文件或可執(zhí)行文件。其中,代表特定平臺的操作系統(tǒng)代號,而則代表特定平臺的計算架構(gòu)代號。使用go env命令便可查看它們在你的計算機(jī)中的實(shí)際值。

1.4版本的Go工具目錄的內(nèi)容如下:

5a        5l        6g        8c        addr2line dist      objdump   tour
5c        6a        6l        8g        cgo       fix       pack      vet
5g        6c        8a        8l        cover     nm        pprof     yacc

下面是Go 1.5版本的:

addr2line asm       compile   dist      fix       nm        pack      tour      vet
api       cgo       cover     doc       link      objdump   pprof     trace     yacc

可以看到,1.5版本的目錄內(nèi)容精簡了不少。這是因?yàn)镚o 1.5的編譯器、鏈接器都已經(jīng)完全用Go語言重寫了。而在這之前,它們都是用C語言寫的,因此不得不為每類平臺編寫不同的程序并生成不同的文件。例如,8g、6g和5g分別是gc編譯器在x86(32bit)、x86-64(64bit)和ARM計算架構(gòu)的計算機(jī)上的實(shí)現(xiàn)程序。相比之下,用Go語言實(shí)現(xiàn)的好處就是,編譯器和鏈接器都將是跨平臺的了。簡要來說,Go 1.5版本的目錄中的文件compile即是統(tǒng)一后的編譯器,而文件link則是統(tǒng)一后的鏈接器。

本教程并不會講解Go語言的編譯器、鏈接器以及其它工具是怎樣被編寫出來的,并只會關(guān)注于怎樣用好包含它們在內(nèi)的Go語言自帶的命令和工具。

為了讓講解更具關(guān)聯(lián)性,也為了讓讀者能夠更容易的理解這些命令和工具,本教程并不會按照這些命令的字典順序描述它們,而會按照我們在實(shí)際開發(fā)過程中通常的使用順序以及它們的重要程度來逐一進(jìn)行說明。現(xiàn)在,我們就先從go build命令開始。

上一篇:go test下一篇:go fix與go tool fix