原創做者,公衆號【程序員讀書】,歡迎關注公衆號,轉載文章請註明出處哦。git
Go語言中的包,相似其餘語言中的庫或命名空間,主要是用於組織代碼和方便代碼複用。程序員
做爲一個獨立的空間,每一個包能夠包含多個以.go結尾的源代碼文件。github
包所在的目錄路徑,則做用包的導入路徑,好比有github.com/util,對應的路徑爲:bash
$GOPATH/src/github.com/util函數
另外,包名最要使用小寫,每一個包有全局惟一的導入路徑,包名則是目錄路徑,如github.com/util,util
是包名工具
package util
var a string
func Format(f format,a ...interface{}){
//函數體
}
複製代碼
在上面定義的util
包中,Format
函數首字母爲大寫,由於,在其餘包能夠訪問,而變量a則只在包內可見。spa
包的源文件代碼第一句是以package
開頭的包聲明語句,在package
以前,能夠添加註釋做爲包的說明,通常只須要在一個源文件中添加說明,以後可使用Go提供的工具鏈導出包文檔,若是包文檔說明很大,能夠在包中單獨建一個doc.go
文檔說明文檔。code
在包中,可使用表達式或常量值初始化某些變量,對於一些複雜的初始化,也能夠放在init
函數中,包中的每一個源文件均可以定義一個init
函數,這個函數不會被導出,而編譯器在編譯包時,會根據源文件編譯順序,執行每個源文件中的init
函數。orm
所以,main包中main函數所在的源文件若是有定義init
函數,則通常最後執行,由於編譯要保證main
執行前,全部包都初始化好了。cdn
package util
var c = b + c
var a = 1
var b = 2
var d string
func init(){
d = "str"
}
複製代碼
你的關注,是我寫做路上最大的鼓勵!