golang中package怎么用?一般大家對(duì)go語(yǔ)言包的了解可能停留在概念的層面上,而對(duì)于package的使用方法了解相對(duì)較少。今天就跟大家聊聊package的使用方法。
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的寶安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!包(package)是多個(gè)Go源碼的集合,是一種高級(jí)的代碼復(fù)用方案,Go語(yǔ)言為我們提供了很多內(nèi)置包,如fmt,os,io等。
我們可以根據(jù)自己的需要?jiǎng)?chuàng)建自己的包。 一個(gè)包可以簡(jiǎn)單理解為一個(gè)存放.go文件的文件夾。該文件夾下面的所有g(shù)o文件都要在代碼的第一行添加如下代碼,聲明改文件歸屬的包。 package 包名 注意事項(xiàng): 1.一個(gè)文件夾下面直接包含的文件只能歸屬一個(gè)package,同樣一個(gè)package的文件不能再多個(gè)文件夾下。 2.包名可以不和文件夾的名字一樣,包名不能包含-符號(hào)。 3.包名為main的包為應(yīng)用程序的入口包,這種包編譯后會(huì)得到一個(gè)可執(zhí)行文件,而編譯不包含main包的源代碼則不會(huì)得到可執(zhí)行文件。
如果想在一個(gè)包中引用另外一個(gè)包里的標(biāo)識(shí)符(如變量,常量,類型,函數(shù)等)時(shí),該標(biāo)識(shí)符必須是對(duì)外可見(jiàn)的(public)。 在Go語(yǔ)言中,只需要將標(biāo)識(shí)符的首字母大寫就可以讓標(biāo)識(shí)符對(duì)外可見(jiàn)了。
package pkg2 import "fmt" // 包變量可見(jiàn)性 var a = 100 // 首字母小寫,外部包不可見(jiàn),只能在當(dāng)前包內(nèi)使用 // 首字母大寫外部包可見(jiàn),可在其他包中使用 const Mode = 1 type person struct { // 首字母小寫,外部包不可見(jiàn),只能在當(dāng)前包內(nèi)使用 name string } // 首字母大寫,外部包可見(jiàn),可在其他包中使用 func Add(x, y int) int { return x + y } func age() { // 首字母小寫,外部包不可見(jiàn),只能在當(dāng)前包內(nèi)使用 var Age = 18 // 函數(shù)局部變量,外部包不可見(jiàn),只能在當(dāng)前函數(shù)內(nèi)使用 fmt.Println(Age) }
結(jié)構(gòu)體中的字段名和接口中的方法名如果首字母都是大寫,外部包可以訪問(wèn)這些字段和方法。例如: type Student struct { Name string //可在包外訪問(wèn)的方法 class string //僅限包內(nèi)訪問(wèn)的字段 } type Payer interface { init() //僅限包內(nèi)訪問(wèn)的方法 Pay() //可在包外訪問(wèn)的方法 }
要在代碼中引用其他包的內(nèi)容,需要使用import關(guān)鍵字導(dǎo)入使用的包。具體語(yǔ)法如下: import "包的路徑" 注意事項(xiàng): 1.import導(dǎo)入語(yǔ)句通常放在文件開(kāi)頭包聲明語(yǔ)句的下面。 2.導(dǎo)入的包名需要使用雙引號(hào)包裹起來(lái)。 3.包名是從$GOPATH/src/后開(kāi)始計(jì)算的,使用/進(jìn)行路徑分隔。 4.GO語(yǔ)言中禁止循環(huán)導(dǎo)入包。
import "包1" import "包2"
import ( "包1" "包2" )
在導(dǎo)入包名的時(shí)候,我們還可以為導(dǎo)入的包設(shè)置別名。通常用于導(dǎo)入的包名太長(zhǎng)或者導(dǎo)入的包名沖突的情況。具體語(yǔ)法格式如下: import 別名 "包的路徑"
單行導(dǎo)入方式定義別名: import "fmt" import m "github.com/Q1mi/studygo/pkg_test" func main() { fmt.Println(m.Add(100, 200)) fmt.Println(m.Mode) }
多行導(dǎo)入方式定義別名: import ( "fmt" m "github.com/Q1mi/studygo/pkg_test" ) func main() { fmt.Println(m.Add(100, 200)) fmt.Println(m.Mode) }
如果我們只希望導(dǎo)入包,而不使用內(nèi)部的數(shù)據(jù)時(shí),可以使用匿名導(dǎo)入包。具體格式如下: import _ "包的路徑" 匿名導(dǎo)入的包與其他方式導(dǎo)入的包一樣,都會(huì)被編譯到可執(zhí)行文件中。
在Go語(yǔ)言程序執(zhí)行時(shí),導(dǎo)入包語(yǔ)句會(huì)自動(dòng)觸發(fā)內(nèi)部init()函數(shù)的調(diào)用。 需要注意的是: init()函數(shù)沒(méi)有參數(shù)也沒(méi)有返回值。 init()函數(shù)在程序運(yùn)行時(shí)自動(dòng)被調(diào)用執(zhí)行,不能再代碼中主動(dòng)調(diào)用它。
Go語(yǔ)言包會(huì)從main包開(kāi)始檢查其導(dǎo)入的所有包,每個(gè)保重又可能導(dǎo)入了其他的包。 Go編譯器由此構(gòu)建出一個(gè)樹(shù)狀的包引用關(guān)系,再根據(jù)引用順序決定編譯順序,依次編譯這些包的代碼。
關(guān)于golang中package就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:golang中package的介紹和使用-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://vcdvsql.cn/article2/ddjjic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容