golang集多編程範式之大成者,使開發者可以快速的開發、測試、部署程序,支持全平臺靜態編譯。go具備優秀的依賴管理,高效的運行效率,龐大的第三方庫支持以及在國內持續的增加勢頭。
做爲開發者的咱們也將不得不重視這門語言的興起。首先向你們講解一下go語言開發環境的目錄結構,讓咱們更清楚的認識它。html
當咱們安裝好後,會在安裝目錄出現一個go/文件夾,若是是windows目錄應在再C:/go下(默認),若是是unix/linux通常會在/usr/local/go下,這個目錄是unix software resource的含義。
# liunx上目錄位置 chao@chao-PC:/usr/local/go$ pwd /usr/local/go # 主要目錄包含以下圖,分別進行說明:
存放Go API檢查器的輔助文件。其中,go1.1.txt、go1.2.txt、go1.3.txt和go1.txt文件分別羅列了不一樣版本的Go語言的所有API特徵;except.txt文件中羅列了一些(在不破壞兼容性的前提下)可能會消失的API特性;next.txt文件則列出了可能在下一個版本中添加的新API特性。
存放全部由官方提供的Go語言相關工具的可執行文件。默認狀況下,該目錄會包含go和gofmt這兩個工具。
存放Go語言幾乎所有的HTML格式的官方文檔和說明,方便開發者在離線時查看。
存放各種編輯器或IDE(集成開發環境)軟件的插件,輔助它們查看和編寫Go代碼。有經驗的軟件開發者定會在該文件夾中看到不少熟悉的工具。
查看:
chao@chao-PC:/usr/local/go/misc$ ls android benchcmp chrome git linkcheck sortac tour arm cgo editors ios nacl swig trace
用於在構建安裝後,保存Go語言標準庫的全部歸檔文件。pkg文件夾包含一個與Go安裝平臺相關的子目錄,咱們稱之爲「平臺相關目錄」。例如,在針對Linux 32bit操做系統的二進制安裝包中,平臺相關目錄的名字就是linux_386;而在針對Windows 64bit操做系統的安裝包中,平臺相關目錄的名字則爲windows_amd64。
Go源碼文件對應於以「.a」爲結尾的歸檔文件,它們就存儲在pkg文件夾下的平臺相關目錄中。
值得一提的是,pkg文件夾下有一個名叫tool的子文件夾,該子文件夾下也有一個平臺相關目錄,其中存放了不少可執行文件。關於這些可執行文件的用途,讀者可參見附屬於本書的Go命令教程。linux
查看:
chao@chao-PC:/usr/local/go/pkg$ ls include linux_amd64_dynlink linux_amd64_shared tool linux_amd64 linux_amd64_race linux_amd64_testcshared_shared
存放全部標準庫、Go語言工具,以及相關底層庫(C語言實現)的源碼。經過查看這個文件夾,能夠了解到Go語言的方方面面。
查看:
chao@chao-PC:/usr/local/go/src$ ls all.bash clean.bat errors iostest.bash os sort all.bat clean.rc expvar log path strconv all.rc cmd flag make.bash plugin strings androidtest.bash cmp.bash fmt make.bat race.bash sync archive compress go Make.dist race.bat syscall bootstrap.bash container hash make.rc reflect testing bufio context html math regexp text buildall.bash crypto image mime run.bash time builtin database index naclmake.bash run.bat unicode bytes debug internal nacltest.bash run.rc unsafe clean.bash encoding io net runtime vendor
存放測試Go語言自身代碼的文件。經過閱讀這些測試文件,可大體瞭解Go語言的一些特性和使用方法。
在環境變量中除了$GOPATH這樣的顯式變量外,Go語言還有兩個隱含的環境變量——GOOS和GOARCH。
GOOS表明程序構建環境的目標操做系統,可籠統地理解爲Go語言安裝到的那個操做系統的標識,其值能夠是darwin、freebsd、linux或windows。
GOARCH則表明程序構建環境的目標計算架構,可籠統地理解爲Go語言安裝到的那臺計算機的計算架構的標識,其值能夠是38六、amd64或arm。android
工做區有3個子目錄:src目錄、pkg目錄和bin目錄。
用於以代碼包的形式組織並保存Go源碼文件。這裏的代碼包,與src下的子目錄一一對應。例如,若一個源碼文件被聲明爲屬於代碼包logging,那麼它就應當被保存在src目錄下名爲logging的子目錄中。固然,咱們也能夠把Go源碼文件直接放於src目錄下,但這樣的Go源碼文件就只能被聲明爲屬於main代碼包了。除非用於臨時測試或演示,通常仍是建議把Go源碼文件放入特定的代碼包中。
Go語言的源碼文件分爲3類:Go庫源碼文件、Go命令源碼文件和Go測試源碼文件。
用於存放經由go install命令構建安裝後的代碼包(包含Go庫源碼文件)的「.a」歸檔文件。該目錄與GOROOT目錄下的pkg功能相似。區別在於,工做區中的pkg目錄專門用來存放用戶(也就是程序開發者)代碼的歸檔文件。構建和安裝用戶源碼的過程通常會以代碼包爲單位進行,好比logging包被編譯安裝後,將生成一個名爲logging.a的歸檔文件,並存放在當前工做區的pkg目錄下的平臺相關目錄中。
與pkg目錄相似,在經過go install命令完成安裝後,保存由Go命令源碼文件生成的可執行文件。在Linux操做系統下,這個可執行文件通常是一個與源碼文件同名的文件。而在Windows操做系統下,這個可執行文件的名稱是源碼文件名稱加.exe後綴。
注意: 這裏有必要明確一下Go語言的命令源碼文件和庫源碼文件的區別。所謂命令源碼文件,就是聲明爲屬於main代碼包,而且包含無參數聲明和結果聲明的main函數的源碼文件。
這類源碼文件能夠獨立運行(使用go run命令),也可被go build或go install命令轉換爲可執行文件。而庫源碼文件則是指存在於某個代碼包中的普通源碼文件。
go工程包含依賴包管理,GOROOT,GOPATH三類目錄來查找編譯須要的庫。他們的順序以下:
經過對golang的目錄結構的瞭解和編譯時查找依賴庫的順序,對這門語言有一個初步的認識,接下來咱們將經過go的內部命令深刻了解一下它。