Go 語言的源碼復(fù)用建立在包(package)基礎(chǔ)之上。包通過 package, import, GOPATH 操作完成。
創(chuàng)新互聯(lián)主打移動網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、主機(jī)域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
Go 語言的入口 main() 函數(shù)所在的包(package)叫 main,main 包想要引用別的代碼,需要import導(dǎo)入!
Go 語言的包與文件夾一一對應(yīng),同一個(gè)目錄下的所有.go文件的第一行添加 包定義,以標(biāo)記該文件歸屬的包,演示語法:
package 包名
包需要滿足:
包可以嵌套定義,對應(yīng)的就是嵌套目錄,但包名應(yīng)該與所在的目錄一致,例如:
// 文件:foo/bar/tool.go中
package bar
// 可以被導(dǎo)出的函數(shù)
func FuncPublic() {
}
// 不可以被導(dǎo)出的函數(shù)
func funcPrivate() {
}
包中,通過標(biāo)識符首字母是否大寫,來確定是否可以被導(dǎo)出。首字母大寫才可以被導(dǎo)出,視為 public 公共的資源。
要引用其他包,可以使用 import 關(guān)鍵字,可以單個(gè)導(dǎo)入或者批量導(dǎo)入,語法演示:
// 單個(gè)導(dǎo)入
import "package"
// 批量導(dǎo)入
import (
"package1"
"package2"
)
導(dǎo)入時(shí),可以為包定義別名,語法演示:
import (
p1 "package1"
p2 "package2"
)
// 使用時(shí)
p1.Method()
以上測試請使用系統(tǒng)包測試。若需要導(dǎo)入自定義包,需要設(shè)置GOPATH環(huán)境變量。
import導(dǎo)入時(shí),會從GO的安裝目錄(也就是GOROOT環(huán)境變量設(shè)置的目錄)和GOPATH環(huán)境變量設(shè)置的目錄中,檢索 src/package 來導(dǎo)入包。如果不存在,則導(dǎo)入失敗。
GOROOT,就是GO內(nèi)置的包所在的位置。
GOPATH,就是我們自己定義的包的位置。
通常我們在開發(fā)Go項(xiàng)目時(shí),調(diào)試或者編譯構(gòu)建時(shí),需要設(shè)置GOPATH指向我們的項(xiàng)目目錄,目錄中的src目錄中的包就可以被導(dǎo)入了:
例如,我么的項(xiàng)目目錄為: D:\projects\goProject,那么我么就需要將我們的源代碼放在 D:\projects\goProject\src 下,同時(shí)設(shè)置GOPATH為 D:\projects\goProject。設(shè)置GOPATH的方案有:
CMD:
set GOPATH=D:\projects\goProject
set GOPATH 可以查看
powershell:
$env:GOPATH="D:\projects\goProject"
$env:GOPATH 可以查看
可以在源碼中,定義 init() 函數(shù)。此函數(shù)會在包被導(dǎo)入時(shí)執(zhí)行,例如如果是在 main 中導(dǎo)入包,包中存在 init(),那么 init() 中的代碼會在 main() 函數(shù)執(zhí)行前執(zhí)行,用于初始化包所需要的特定資料。例如:
包源碼:
src/userPackage/tool.go
package userPackage
import "fmt"
func init() {
fmt.Println("tool init")
}
主函數(shù)源碼:
src/main.go
package main
import (
"userPackage"
)
func main() {
fmt.Println("main run")
// 使用userPackage
userPackage.SomeFunc()
}
執(zhí)行時(shí),會先輸出 "tool init",再輸出 "main run"。
如果僅僅需要導(dǎo)入包時(shí)執(zhí)行初始化操作,并不需要使用包內(nèi)的其他函數(shù),常量等資源。則可以在導(dǎo)入包時(shí),匿名導(dǎo)入:
import (
_ "userPackage"
)
使用下劃線作為包的別名,會僅僅執(zhí)行init()
完!
原文出自:小韓說課
微信關(guān)注:小韓說課
新聞標(biāo)題:Go語言的包管理
URL分享:http://chinadenli.net/article2/ppcjoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站排名、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)