真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang中package的介紹和使用

golang中package怎么用?一般大家對(duì)go語(yǔ)言包的了解可能停留在概念的層面上,而對(duì)于package的使用方法了解相對(duì)較少。今天就跟大家聊聊package的使用方法。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到魚(yú)臺(tái)網(wǎng)站設(shè)計(jì)與魚(yú)臺(tái)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋魚(yú)臺(tái)地區(qū)。

1.Go語(yǔ)言的包(package)

1.1包介紹

包(package)是多個(gè)Go源碼的集合,是一種高級(jí)的代碼復(fù)用方案,Go語(yǔ)言為我們提供了很多內(nèi)置包,如fmt,os,io等。

1.2定義包

我們可以根據(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í)行文件。

1.3可見(jiàn)性

如果想在一個(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)的方法
}

1.4包的導(dǎo)入

要在代碼中引用其他包的內(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)入包。

1.4.1單行導(dǎo)入

import "包1"
import "包2"

1.4.2多行導(dǎo)入

import (
    "包1"
    "包2"
)

1.5自定義包名

在導(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)
}

1.6匿名導(dǎo)入包

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

import _ "包的路徑"

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

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

1.7.1init()函數(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)用它。

golang中package的介紹和使用

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

Go語(yǔ)言包會(huì)從main包開(kāi)始檢查其導(dǎo)入的所有包,每個(gè)保重又可能導(dǎo)入了其他的包。
Go編譯器由此構(gòu)建出一個(gè)樹(shù)狀的包引用關(guān)系,再根據(jù)引用順序決定編譯順序,依次編譯這些包的代碼。

golang中package的介紹和使用

關(guān)于golang中package就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。


分享名稱:golang中package的介紹和使用
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/gjgodg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部