濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > golang 之import和package的使用

golang 之import和package的使用

熱門標(biāo)簽:高德地圖標(biāo)注口訣 中國(guó)地圖標(biāo)注省會(huì)高清 學(xué)海導(dǎo)航地圖標(biāo)注 浙江高速公路地圖標(biāo)注 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 西部云谷一期地圖標(biāo)注 地圖標(biāo)注的汽車標(biāo) 南通如皋申請(qǐng)開通400電話 廣州呼叫中心外呼系統(tǒng)

golang 使用包 package 來管理定義模塊,可以使用 import 關(guān)鍵字來導(dǎo)入使用。

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

package 的定義

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

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

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

hello 模塊

//$GOPATH/src/foo/bar/baz/hello.go
package baz

import (
  "fmt"
)

// 模塊初始化函數(shù) import 包時(shí)被調(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 包時(shí)被調(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"
)

普通導(dǎo)入就是按照加載機(jī)制,將要使用的包導(dǎo)入進(jìn)來,然后使用 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())
}

如果兩個(gè)包的包名存在沖突,或者包名太長(zhǎng)需要簡(jiǎn)寫時(shí),我們可以使用別名導(dǎo)入來解決。

點(diǎn)操作

package main

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

func main() {
  fmt.Println(Hello(), World()) // 直接使用包內(nèi)的方法即可 不需要顯式使用包名
}

. 導(dǎo)入可以讓包內(nèi)的方法注冊(cè)到當(dāng)前包的上下文中,直接調(diào)用方法名即可,不需要再加包前綴。

下劃線操作

package main

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

func main() {
  fmt.Println(baz.Hello(), baz.World()) // 錯(cuò)誤 _ 并沒有導(dǎo)入包 只是引入并執(zhí)行包模塊的 init 方法
}

_ 是包引用操作,只會(huì)執(zhí)行包下各模塊中的 init 方法,并不會(huì)真正的導(dǎo)入包,所以不可以調(diào)用包內(nèi)的其他方法。

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 解決Goland 同一個(gè)package中函數(shù)互相調(diào)用的問題
  • 淺談golang package中init方法的多處定義及運(yùn)行順序問題
  • maven package 打包報(bào)錯(cuò) Failed to execute goal的解決
  • golang package time的用法具體詳解
  • Go 自定義package包設(shè)置與導(dǎo)入操作

標(biāo)簽:貴州 保定 常州 曲靖 許昌 德宏 吐魯番 東營(yíng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang 之import和package的使用》,本文關(guān)鍵詞  golang,之,import,和,package,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang 之import和package的使用》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang 之import和package的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    云南省| 达日县| 安乡县| 沾化县| 苍梧县| 凭祥市| 临江市| 岱山县| 砚山县| 天祝| 兖州市| 荣昌县| 馆陶县| 无锡市| 丁青县| 新沂市| 阿坝| 九龙城区| 保康县| 汉源县| 鹤岗市| 当阳市| 日土县| 沙河市| 工布江达县| 宁强县| 莲花县| 乃东县| 清原| 前郭尔| 商南县| 荥阳市| 南召县| 阿坝县| 黎平县| 兴国县| 平泉县| 新乡市| 阿巴嘎旗| 南乐县| 建平县|