golang 之import和package的使用
golang 使用包 package 來管理定義模塊,可以使用 import 關鍵字來導入使用。
- 如果導入的是 go 自帶的包,則會去安裝目錄 $GOROOT/src 按包路徑加載,如 fmt 包
- 如果是我們 go get 安裝或自定義的包,則會去 $GOPATH/src 下加載
package 的定義
package 的存放位置是以 $GOPATH/src 作為根目錄,然后靈活的按照目錄去組織,且包名需與最后一級目錄名一致。
例如我們自定義 baz 包,包模塊的存放位置則為 $GOPATH/src/foo/bar/baz,baz 包的源碼都存放在此目錄下,foo/bar/baz 則作為包路徑被 import 載入。
我們需要規(guī)范的將 baz 包中源碼的 package 定義為 baz,就定義好一個可 import 載入的的包了。
hello 模塊
//$GOPATH/src/foo/bar/baz/hello.go package baz import ( "fmt" ) // 模塊初始化函數(shù) import 包時被調(diào)用 func init() { fmt.Println("hello module init function") } func Hello() { return "hello" }
world 模塊
//$GOPATH/src/foo/bar/baz/world.go package baz import ( "fmt" ) // 模塊初始化函數(shù) import 包時被調(diào)用 func init() { fmt.Println("world module init function") } func World() string { return "world" }
package main import ( "fmt" "foo/bar/baz" //引入我們自定義的包 ) func main() { fmt.Println(baz.Hello(), baz.World()) }
import的使用
普通操作
import ( "fmt" "log" "foo/bar/baz" )
普通導入就是按照加載機制,將要使用的包導入進來,然后使用 packageName.MethodName 的方式調(diào)用包內(nèi)的方法即可。注意如果要包方法在其他包中可以調(diào)用,包方法需要首字母大寫,例如:fmt.Println() fmt.Printf()。
別名操作
package main import ( "fmt" myBaz "foo/bar/baz" ) func main() { fmt.Println(myBaz.Hello(), myBaz.World()) }
如果兩個包的包名存在沖突,或者包名太長需要簡寫時,我們可以使用別名導入來解決。
點操作
package main import ( "fmt" . "foo/bar/baz" ) func main() { fmt.Println(Hello(), World()) // 直接使用包內(nèi)的方法即可 不需要顯式使用包名 }
. 導入可以讓包內(nèi)的方法注冊到當前包的上下文中,直接調(diào)用方法名即可,不需要再加包前綴。
下劃線操作
package main import ( "fmt" _ "foo/bar/baz" ) func main() { fmt.Println(baz.Hello(), baz.World()) // 錯誤 _ 并沒有導入包 只是引入并執(zhí)行包模塊的 init 方法 }
_ 是包引用操作,只會執(zhí)行包下各模塊中的 init 方法,并不會真正的導入包,所以不可以調(diào)用包內(nèi)的其他方法。
相信對很多 phper 來說遵循 PSR4 的 Namespace 會將與路徑緊密相關命名空間也作為類名的一部分,而 golang 則只將模塊目錄文件夾名作為包名,前面的路徑只是用來導入而和包名無關,還是有一點點需要注意的。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 如何解決django配置settings時遇到Could not import settings ''conf.local''
- Golang報“import cycle not allowed”錯誤的2種解決方法
- 詳解golang避免循環(huán)import問題(“import cycle not allowed”)
- golang中import cycle not allowed解決的一種思路
- go各種import的使用方法講解
- 對Golang import 導入包語法詳解
- Golang import 導入包語法及一些特殊用法詳解
- Golang import本地包和導入問題相關詳解
- golang import自定義包方式
- 解決golang在import自己的包報錯的問題
- 解決goland 導入項目后import里的包報紅問題
- Golang中 import cycle not allowed 問題的解決方法
- Go基礎教程系列之import導入包(遠程包)和變量初始化詳解
相關文章
使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間
這篇文章主要介紹了使用golang獲取linux上文件的訪問/創(chuàng)建/修改時間,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08在?Golang?中使用?Cobra?創(chuàng)建?CLI?應用
這篇文章主要介紹了在?Golang?中使用?Cobra?創(chuàng)建?CLI?應用,來看下?Cobra?的使用,這里我們使用的?go1.13.3?版本,使用?Go?Modules?來進行包管理,需要的朋友可以參考下2022-01-01