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