Go語言工做空間:編譯工具對源碼目錄有嚴格要求,每一個工做空間 (workspace) 必須由bin、pkg、src三個目錄組成。python
src ---- 項目源碼目錄,裏面每個子目錄,就是一個包,包內是Go語言的源碼文件。
pkg ---- Go語言編譯的.a 中間文件存放目錄,可自動生成。
bin ---- Go語言編譯可執行文件存放目錄,可自動生成。git
包是結構化代碼的一種方式:每一個程序都由包的概念組成,可使用自身的包或者從其它包中導入內容。編程
如同其它一些編程語言中的類庫或命名空間的概念,每一個Go文件都屬於且僅屬於一個包。一個包能夠由許多以.go爲擴展名的源文件組成,所以文件名和包名通常來講都是不相同的。編程語言
包聲明 "package + 包名" ,必須在源文件中非註釋的第一行指明這個文件屬於哪一個包。
如:package main。package main表示一個可獨立執行的程序,每一個Go應用程序都包含一個名爲 main 的包。函數
同一個包(package)下面,能夠有很是多的不一樣文件,只要每一個文件的頭部都有相同name就能夠,如 "package oldboy" 。文件夾名字能夠和這個package名稱不一致。工具
在Go的安裝文件裏包含了一些能夠直接使用的包,即標準庫。
Go語言標準庫包,覆蓋了幾乎全部的基礎庫,提供了豐富普遍的功能特性。
標準庫的內容還可能繼續增長,你們能夠經過在線查閱庫API或使用godoc(包含在Go發佈包中)來獲取最新信息以及全面瞭解每一個包所具有的功能。spa
經過"go get + 完整包名"保存下載第三方庫。code
在執行go get 命令以前,確保你的電腦配置了環境變量GOPATH,而且安裝git。blog
在Go語言中根據首字母的大小寫來肯定能夠訪問的權限。若是首字母大寫,則能夠被其餘的包訪問;若是首字母小寫,則只能在本包中使用。該規則適用於全局變量、全局常量、類型、結構字段、函數、方法等。get
能夠簡單的理解成,首字母大寫是公有的,首字母小寫是私有的。
在導入包以後,你只能訪問包所導出的名字,任何未導出的名字是不能被包外的代碼訪問的。
使用包成員前,必須先用import關鍵字導入,但不能造成導入循環。
import用法:
import "fmt"
import "./test"
import "oldboy/python"
導入fmt,並給他啓別名f
import f "fmt"
import . "fmt"
"import _"
import _ "fmt"
表示不使用該包,而是隻是使用該包的init函數,並不顯示的使用該包的其餘內容。
這種形式的import,當import時就執行了fmt包中的init函數,而不可以使用該包的其餘函數。
注意:未使用的導入包,會被編譯器視爲錯誤 (不包括 "import _"
)。實例以下:
package main import ( "fmt" ) func main() { }
編譯錯誤:
./main.go:4:2: imported and not used: "fmt"