套件是函數和資料的集合,用 package 關鍵字定義一個套件。
主要用於組織 Go 原始碼,提供了更好的可重複使用性與可讀性。由於套件提供了代碼的封裝,因此使得 Go 應用程式易於維護。
下面建立一個自訂套件的實例
建立存放包的目錄pac
mkdir -p $GOPATH/src/test/pac cd $GOPATH/src/test/pac
新檔案pac.go
package pac import "fmt" func Printstr(x string) { fmt.Println(x + " is pac") }
這裡為了方便維護,將包名和目錄名一致。
新demo.go呼叫自訂的套件
在$GOPATH/src/test 目錄下建立
package main import "pac" func main() { pac.Printstr("this") }
運行
go run demo.go
輸出this is pac ,證明成功
以上實例,引入檔案demo.go和套件檔案pac.go不在同一目錄,不屬於同一個套件。那麼屬於同一個包,且在同一個目錄的兩個文件,是如何存取的,看下面例子。
建立pac2.go
在$GOPATH/src/test/pac目錄下
package pac import "fmt" func printstr2 (x string) { fmt.Println(x + " is pac2") }
修改pac.go,讓pac.go呼叫pac2.go
package pac func Printstr(x string) { //fmt.Println(x + " is pac") printstr2(x) }
運行demo.go
go run demo.go
輸出結果:this is pac2
總結
1、 如果專案目錄不在GOPATH環境變數設定的路徑裡,需要把專案移到GOPATH路徑裡,或是GOPATH中把專案路徑設定進去;不然會報:
demo.go:3:8: cannot find package "pac" in any of: /usr/lib/golang/src/pac (from $GOROOT) /home/go/src/pac (from $GOPATH)
2、import語句使用的是資料夾的名稱。
3、套件檔案的函數名稱第一個字母大寫,這樣外部可以呼叫。如果同一個package下,所有檔案之間相互訪問,函數名稱第一個字母大寫小寫無所謂。
4、main包,不能存取同目錄,同main包其他文件。
5、資料夾的名稱和package的名稱不一定相同,為了方便維護,建議一致。
6、呼叫自訂套件使用package名稱.函數名稱的方式,如上例:
pac.Printstr("this")
更多相關知識請關注go語言教學欄位
以上是go語言中自訂套件的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!