国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

golang 之import和package的使用

2020-04-01 18:49:39
字體:
來源:轉載
供稿:網友

golang 使用包 package 來管理定義模塊,可以使用 import 關鍵字來導入使用。

  1. 如果導入的是 go 自帶的包,則會去安裝目錄 $GOROOT/src 按包路徑加載,如 fmt 包
  2. 如果是我們 go get 安裝或自定義的包,則會去 $GOPATH/src 下加載

package 的定義

package 的存放位置是以 $GOPATH/src 作為根目錄,然后靈活的按照目錄去組織,且包名需與最后一級目錄名一致。

例如我們自定義 baz 包,包模塊的存放位置則為 $GOPATH/src/foo/bar/baz,baz 包的源碼都存放在此目錄下,foo/bar/baz 則作為包路徑被 import 載入。

我們需要規范的將 baz 包中源碼的 package 定義為 baz,就定義好一個可 import 載入的的包了。

hello 模塊

//$GOPATH/src/foo/bar/baz/hello.gopackage bazimport (  "fmt")// 模塊初始化函數 import 包時被調用func init() {  fmt.Println("hello module init function")}func Hello() {  return "hello"}

world 模塊

//$GOPATH/src/foo/bar/baz/world.gopackage bazimport (  "fmt")// 模塊初始化函數 import 包時被調用func init() {  fmt.Println("world module init function")}func World() string {  return "world"}
package mainimport (  "fmt"  "foo/bar/baz" //引入我們自定義的包)func main() {  fmt.Println(baz.Hello(), baz.World())}

import的使用

普通操作

import (  "fmt"  "log"  "foo/bar/baz")

普通導入就是按照加載機制,將要使用的包導入進來,然后使用 packageName.MethodName 的方式調用包內的方法即可。注意如果要包方法在其他包中可以調用,包方法需要首字母大寫,例如:fmt.Println() fmt.Printf()。

別名操作

package mainimport (  "fmt"  myBaz "foo/bar/baz")func main() {  fmt.Println(myBaz.Hello(), myBaz.World())}

如果兩個包的包名存在沖突,或者包名太長需要簡寫時,我們可以使用別名導入來解決。

點操作

package mainimport (  "fmt"  . "foo/bar/baz")func main() {  fmt.Println(Hello(), World()) // 直接使用包內的方法即可 不需要顯式使用包名}

. 導入可以讓包內的方法注冊到當前包的上下文中,直接調用方法名即可,不需要再加包前綴。

下劃線操作

package mainimport (  "fmt"  _ "foo/bar/baz")func main() {  fmt.Println(baz.Hello(), baz.World()) // 錯誤 _ 并沒有導入包 只是引入并執行包模塊的 init 方法}

_ 是包引用操作,只會執行包下各模塊中的 init 方法,并不會真正的導入包,所以不可以調用包內的其他方法。

相信對很多 phper 來說遵循 PSR4 的 Namespace 會將與路徑緊密相關命名空間也作為類名的一部分,而 golang 則只將模塊目錄文件夾名作為包名,前面的路徑只是用來導入而和包名無關,還是有一點點需要注意的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卓资县| 广宗县| 盱眙县| 开原市| 大余县| 石楼县| 泰州市| 西城区| 龙南县| 米脂县| 绍兴县| 溧阳市| 晋江市| 门头沟区| 安塞县| 离岛区| 涪陵区| 普安县| 子洲县| 临澧县| 新龙县| 红桥区| 剑阁县| 汨罗市| 夏河县| 安图县| 肇东市| 晋中市| 菏泽市| 聂荣县| 阿瓦提县| 南城县| 汤阴县| 固镇县| 谢通门县| 东阳市| 柘荣县| 荆州市| 清水县| 铁岭市| 台南市|