欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

go語(yǔ)言碎片整理之包-創(chuàng)新互聯(lián)

在工程化的Go語(yǔ)言開(kāi)發(fā)項(xiàng)目中,Go語(yǔ)言的源碼復(fù)用是建立在包(package)基礎(chǔ)之上的,本文介紹了go語(yǔ)言中如何定義包,如何導(dǎo)出包的內(nèi)容以及如何導(dǎo)入其他包。

網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。成都創(chuàng)新互聯(lián)公司擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷(xiāo)思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開(kāi)源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺(jué)化效果。

包介紹

包(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è)包,同樣一個(gè)包的文件不能在多個(gè)文件夾下。
2、包名可以不和文件夾的名字一樣,包名不能包含-符號(hào)
3、包名為main的包為應(yīng)用程序的入口包,編譯時(shí)不包含main包的源代碼時(shí)不會(huì)得到可執(zhí)行文件。

可見(jiàn)性

如果想在一個(gè)包中引用另外一個(gè)包里的標(biāo)識(shí)符(如變量、常量、類型、函數(shù)等),該標(biāo)識(shí)符必須是對(duì)外可見(jiàn)的(public)。在go語(yǔ)言中只需要將標(biāo)識(shí)符的首字母大寫(xiě)就可以讓標(biāo)識(shí)符對(duì)外可見(jiàn)。
舉個(gè)例子,我們定義一個(gè)包名為pkg2的包,代碼如下:

var a = 100

const Mode = 1

type person struct {
    name string
}

func Add(x, y int) int {
    return x + y
}
func age() {
    var Age = 18
    fmt.Println(Age)
}

結(jié)構(gòu)體中的字段名和接口中的方法名如果首字母都是大寫(xiě),外部包可以訪問(wèn)這個(gè)字段和方法,例如:

type Student struct {
    Name string
    class string
}
type Payer interface{
    init()
    Pay()
}

包的導(dǎo)入

要在代碼中引用其他包的內(nèi)容,需要使用import 關(guān)鍵字導(dǎo)入使用的包。具體語(yǔ)法如下:

import "包的路徑"

注意事項(xiàng):

  • import導(dǎo)入語(yǔ)句通常放在文件開(kāi)頭包聲明語(yǔ)句下面。
  • 導(dǎo)入的包名需要使用雙引號(hào)包裹起來(lái)。
  • 包名是從$GOPATH/src/后開(kāi)始計(jì)算的,使用/進(jìn)行路徑分割。
  • Go語(yǔ)言中禁止循環(huán)導(dǎo)入包。

自定義包名

在導(dǎo)入包名的時(shí)候,我們還可以為導(dǎo)入的包名設(shè)置別名。具體格式如下:

import 別名  "包的路徑"

多行導(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)入包

如果只希望導(dǎo)入包,而不使用包內(nèi)部的數(shù)據(jù)時(shí),可以使用匿名導(dǎo)入包。具體的格式如下:

import _  "包的路徑"

匿名導(dǎo)入的包與其他方式導(dǎo)入的包一樣都會(huì)被編譯到可執(zhí)行文件中。

init()初始化函數(shù)

init()函數(shù)介紹

在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)用它。
包初始化執(zhí)行的順序如下圖所示:

go語(yǔ)言碎片整理之包

init()函數(shù)執(zhí)行順序

Go語(yǔ)言包會(huì)從main包開(kāi)始檢查其導(dǎo)入的所有包,每個(gè)包中又可能導(dǎo)入了其他包,Go編譯器由此構(gòu)建出一個(gè)樹(shù)狀的包引用關(guān)系,再根據(jù)引用順序決定編譯順序,依次編譯這些包的代碼。
在運(yùn)行時(shí),被最后導(dǎo)入的包會(huì)最先初始化并調(diào)用其init()函數(shù),如下圖示:
go語(yǔ)言碎片整理之包

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.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)景需求。

網(wǎng)頁(yè)題目:go語(yǔ)言碎片整理之包-創(chuàng)新互聯(lián)
文章URL:http://www.chinadenli.net/article4/dpccoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站改版域名注冊(cè)網(wǎng)站制作做網(wǎng)站面包屑導(dǎo)航

廣告

聲明:本網(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)

商城網(wǎng)站建設(shè)