久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Go語言怎么導(dǎo)入包

在Go語言中,可以通過import語句來導(dǎo)入包,導(dǎo)入的包名使用雙引號包圍,包名是從GOPATH開始計(jì)算的路徑,使用“/”進(jìn)行路徑分隔。使用import導(dǎo)入包有兩種基本格式:1、單行導(dǎo)入語法“import "包1" import "包2"”;2、多行導(dǎo)入語法“import("包1" "包2" …)”。

Go語言怎么導(dǎo)入包

本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

Go語言import導(dǎo)入包——在代碼中使用其他的代碼

可以在一個(gè) Go語言源文件包聲明語句之后,其它非導(dǎo)入聲明語句之前,包含零到多個(gè)導(dǎo)入包聲明語句。每個(gè)導(dǎo)入聲明可以單獨(dú)指定一個(gè)導(dǎo)入路徑,也可以通過圓括號同時(shí)導(dǎo)入多個(gè)導(dǎo)入路徑。要引用其他包的標(biāo)識符,可以使用 import 關(guān)鍵字,導(dǎo)入的包名使用雙引號包圍,包名是從 GOPATH 開始計(jì)算的路徑,使用/進(jìn)行路徑分隔。

默認(rèn)導(dǎo)入的寫法

導(dǎo)入有兩種基本格式,即單行導(dǎo)入和多行導(dǎo)入,兩種導(dǎo)入方法的導(dǎo)入代碼效果是一致的。

1) 單行導(dǎo)入

單行導(dǎo)入格式如下:

import "包1" import "包2"
登錄后復(fù)制

2) 多行導(dǎo)入

當(dāng)多行導(dǎo)入時(shí),包名在 import 中的順序不影響導(dǎo)入效果,格式如下:

import(     "包1"     "包2"     … )
登錄后復(fù)制

導(dǎo)入包后自定義引用的包名

如果我們想同時(shí)導(dǎo)入兩個(gè)有著名字相同的包,例如 math/rand 包和 crypto/rand 包,那么導(dǎo)入聲明必須至少為一個(gè)同名包指定一個(gè)新的包名以避免沖突。這叫做導(dǎo)入包的重命名。

import (     "crypto/rand"     mrand "math/rand" // 將名稱替換為mrand避免沖突 )
登錄后復(fù)制

導(dǎo)入包的重命名只影響當(dāng)前的源文件。其它的源文件如果導(dǎo)入了相同的包,可以用導(dǎo)入包原本默認(rèn)的名字或重命名為另一個(gè)完全不同的名字。

導(dǎo)入包重命名是一個(gè)有用的特性,它不僅僅只是為了解決名字沖突。如果導(dǎo)入的一個(gè)包名很笨重,特別是在一些自動(dòng)生成的代碼中,這時(shí)候用一個(gè)簡短名稱會(huì)更方便。選擇用簡短名稱重命名導(dǎo)入包時(shí)候最好統(tǒng)一,以避免包名混亂。選擇另一個(gè)包名稱還可以幫助避免和本地普通變量名產(chǎn)生沖突。例如,如果文件中已經(jīng)有了一個(gè)名為 path 的變量,那么我們可以將"path"標(biāo)準(zhǔn)包重命名為 pathpkg。

每個(gè)導(dǎo)入聲明語句都明確指定了當(dāng)前包和被導(dǎo)入包之間的依賴關(guān)系。如果遇到包循環(huán)導(dǎo)入的情況,Go語言的構(gòu)建工具將報(bào)告錯(cuò)誤。

匿名導(dǎo)入包——只導(dǎo)入包但不使用包內(nèi)類型和數(shù)值

如果只希望導(dǎo)入包,而不使用任何包內(nèi)的結(jié)構(gòu)和類型,也不調(diào)用包內(nèi)的任何函數(shù)時(shí),可以使用匿名導(dǎo)入包,格式如下:

import (     _ "path/to/package" )
登錄后復(fù)制

其中,path/to/package 表示要導(dǎo)入的包名,下畫線_表示匿名導(dǎo)入包。

匿名導(dǎo)入的包與其他方式導(dǎo)入包一樣會(huì)讓導(dǎo)入包編譯到可執(zhí)行文件中,同時(shí),導(dǎo)入包也會(huì)觸發(fā) init() 函數(shù)調(diào)用。

包在程序啟動(dòng)前的初始化入口:init

在某些需求的設(shè)計(jì)上需要在程序啟動(dòng)時(shí)統(tǒng)一調(diào)用程序引用到的所有包的初始化函數(shù),如果需要通過開發(fā)者手動(dòng)調(diào)用這些初始化函數(shù),那么這個(gè)過程可能會(huì)發(fā)生錯(cuò)誤或者遺漏。我們希望在被引用的包內(nèi)部,由包的編寫者獲得代碼啟動(dòng)的通知,在程序啟動(dòng)時(shí)做一些自己包內(nèi)代碼的初始化工作。

例如,為了提高數(shù)學(xué)庫計(jì)算三角函數(shù)的執(zhí)行效率,可以在程序啟動(dòng)時(shí),將三角函數(shù)的值提前在內(nèi)存中建成索引表,外部程序通過查表的方式迅速獲得三角函數(shù)的值。但是三角函數(shù)索引表的初始化函數(shù)的調(diào)用不希望由每一個(gè)外部使用三角函數(shù)的開發(fā)者調(diào)用,如果在三角函數(shù)的包內(nèi)有一個(gè)機(jī)制可以告訴三角函數(shù)包程序何時(shí)啟動(dòng),那么就可以解決初始化的問題。

Go 語言為以上問題提供了一個(gè)非常方便的特性:init() 函數(shù)。

init() 函數(shù)的特性如下:

  • 每個(gè)源碼可以使用 1 個(gè) init() 函數(shù)。

  • init() 函數(shù)會(huì)在程序執(zhí)行前(main() 函數(shù)執(zhí)行前)被自動(dòng)調(diào)用。

  • 調(diào)用順序?yàn)?main() 中引用的包,以深度優(yōu)先順序初始化。

例如,假設(shè)有這樣的包引用關(guān)系:main→A→B→C,那么這些包的 init() 函數(shù)調(diào)用順序?yàn)椋?/p>

C.init→B.init→A.init→main
登錄后復(fù)制

說明:

  • 同一個(gè)包中的多個(gè) init() 函數(shù)的調(diào)用順序不可預(yù)期。

  • init() 函數(shù)不能被其他函數(shù)調(diào)用。

理解包導(dǎo)入后的init()函數(shù)初始化順序

Go 語言包會(huì)從 main 包開始檢查其引用的所有包,每個(gè)包也可能包含其他的包。Go 編譯器由此構(gòu)建出一個(gè)樹狀的包引用關(guān)系,再根據(jù)引用順序決定編譯順序,依次編譯這些包的代碼。

在運(yùn)行時(shí),被最后導(dǎo)入的包會(huì)最先初始化并調(diào)用 init() 函數(shù)。

通過下面的代碼理解包的初始化順序。

代碼8-3 包導(dǎo)入初始化順序入口(…/chapter08/pkginit/main.go)

package main import "chapter08/code8-2/pkg1" func main() {     pkg1.ExecPkg1() }
登錄后復(fù)制

代碼說明如下:

  • 第 3 行,導(dǎo)入 pkg1 包。

  • 第 7 行,調(diào)用 pkg1 包的 ExecPkg1() 函數(shù)。

代碼8-4 包導(dǎo)入初始化順序pkg1(…/chapter08/pkginit/pkg1/pkg1.go)

package pkg1 import (     "chapter08/code8-2/pkg2"     "fmt" ) func ExecPkg1() {     fmt.Println("ExecPkg1")     pkg2.ExecPkg2() } func init() {     fmt.Println("pkg1 init") }
登錄后復(fù)制

代碼說明如下:

  • 第 4 行,導(dǎo)入 pkg2 包。

  • 第 8 行,聲明 ExecPkg1() 函數(shù)。

  • 第 12 行,調(diào)用 pkg2 包的 ExecPkg2() 函數(shù)。

  • 第 15 行,在 pkg1 包初始化時(shí),打印 pkg1 init。

代碼8-5 包導(dǎo)入初始化順序pkg2(…/chapter08/pkginit/pkg2/pkg2.go)

package pkg2 import "fmt" func ExecPkg2() {     fmt.Println("ExecPkg2") } func init() {     fmt.Println("pkg2 init") }
登錄后復(fù)制

代碼說明如下:

  • 第 5 行,聲明 ExecPkg2() 函數(shù)。

  • 第 10 行,在 pkg2 包初始化時(shí),打印 pkg2 init。

執(zhí)行代碼,輸出如下:

pkg2 init pkg1 init ExecPkg1 ExecPkg2
登錄后復(fù)制

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲欧美久久| 日韩 欧美一区二区三区| 国产亚洲高清一区| 欧美一区成人| 国产欧美日韩一区二区三区在线| 日韩精品免费一区二区夜夜嗨| 中文字幕一区日韩精品| 亚洲精品麻豆| 国产亚洲精品美女久久| 国产欧美视频在线| 久久久久伊人| 中文字幕一区久| 久久国产影院| 亚洲精品1区2区| 亚洲区第一页| 亚洲精品护士| 国产一区 二区| 精品精品久久| 欧美va天堂在线| 性色一区二区| 日韩av资源网| 久久影院一区二区三区| 深夜福利视频一区二区| 国产一区二区中文| 日韩一区二区三区四区五区| 国产日韩免费| 亚洲涩涩在线| 视频一区视频二区中文字幕| 国产精品中文字幕制服诱惑| 国产精品毛片一区二区在线看| 国产高潮在线| 六月丁香综合| 免费在线欧美黄色| 激情久久久久久| 人人爽香蕉精品| 欧美a级一区二区| 久久九九99| 日本成人在线不卡视频| 国产一区二区视频在线看| 不卡一区综合视频| 国产亚洲第一伦理第一区| 日韩中文影院| 日本亚洲视频| 超碰在线99| 蜜桃久久精品一区二区| 国产视频网站一区二区三区| 日韩国产综合| 日韩视频一二区| 久久影院午夜精品| 午夜在线播放视频欧美| 久久中文字幕一区二区三区| 黑丝美女一区二区| 欧美国产专区| 日本大胆欧美人术艺术动态| 精品不卡一区| 中文字幕亚洲精品乱码| 91视频一区| 少妇精品久久久一区二区三区| 日本一区二区免费高清| 日韩精品一二区| 精品国产中文字幕第一页| 香蕉成人久久| 日韩福利一区| 久久激情综合网| av不卡免费看| 日本蜜桃在线观看视频| 91九色综合| 激情五月综合| 成人一区而且| 91福利精品在线观看| 欧美网站在线| 亚洲天堂资源| 国产精品激情电影| 免费国产亚洲视频| 久久亚洲成人| 国产精品v亚洲精品v日韩精品| 午夜国产欧美理论在线播放| 久久精品国产网站| 日本精品久久| 亚洲女人av| 成人羞羞在线观看网站| 国产精品麻豆成人av电影艾秋 | 欧美一级二级视频| 夜夜嗨一区二区| 蜜臀久久精品| 精品国产欧美日韩一区二区三区| 日韩av电影一区| 国产色综合网| 久久美女性网| 国产中文欧美日韩在线| 国产精品中文字幕制服诱惑| 最新国产精品| 免费欧美在线视频| 亚洲欧洲一区二区天堂久久| 亚洲精品一级二级| 国产va在线视频| 毛片不卡一区二区| 国产欧美一级| 国产欧美日韩影院| 日本少妇一区二区| 日韩一区网站| 午夜电影一区| 亚洲精品欧美| 亚洲精品在线二区| 99综合视频| 亚洲黄页一区| 亚洲欧洲一区| 亚洲精品91| 欧美日韩国产在线观看网站 | 欧美精品第一区| 国产精品综合色区在线观看| 日韩高清国产一区在线| 日韩三级视频| 日本v片在线高清不卡在线观看| 亚洲尤物av| 午夜性色一区二区三区免费视频| 日韩视频二区| 美女黄网久久| 亚洲免费一区三区| 日本一区二区三区中文字幕| 日韩福利视频一区| 国产精品一区高清| 麻豆成人在线观看| 精品久久久中文字幕| 97精品国产| 日韩视频网站在线观看| 99久久精品网| 亚洲少妇一区| 中文字幕一区二区av| 日韩区欧美区| 国产精品尤物| 日本麻豆一区二区三区视频| 欧美天堂一区二区| 欧美黑人巨大videos精品| 麻豆一区在线| 特黄毛片在线观看| 国产伊人精品| 丝袜美腿高跟呻吟高潮一区| 亚洲精品免费观看| 国产美女久久| 不卡一二三区| 日韩视频二区| 午夜电影一区| 免费视频一区二区三区在线观看 | 伊人影院久久| 免费观看在线色综合| 91精品国产一区二区在线观看| 国产精品日本一区二区不卡视频 | 国产精品伊人| 国产理论在线| 日韩天堂av| 日韩av中文字幕一区| 精品高清久久| 好看不卡的中文字幕| 日av在线不卡| 国产精品入口久久| 欧美成人基地 | 日韩一区二区三区四区五区| 欧美国产另类| 亚洲午夜黄色| 日本亚洲最大的色成网站www| 国产精品男女| 欧美肉体xxxx裸体137大胆| 免费在线观看不卡| 麻豆精品一区二区综合av| 99久久婷婷这里只有精品| 综合在线一区| 国产精品白丝久久av网站| 欧美不卡高清一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品v日韩精品v欧美精品网站| 日韩久久精品网| 免费日本视频一区| 久久精品三级| 国产精品试看| 久久99影视| 黄色亚洲免费| 国产精品久久久久久久久久妞妞| 999国产精品| 91九色综合| 久久亚洲专区| 国产一精品一av一免费爽爽| 91综合网人人| 日本伊人久久| 久久久精品久久久久久96| 日韩成人一级| 五月婷婷亚洲| 精品视频在线你懂得| 另类亚洲自拍| 91亚洲国产| 日本欧美韩国一区三区| 久久久9色精品国产一区二区三区| 日韩在线黄色| 欧美一级精品| 久久免费精品| 爽好多水快深点欧美视频| 国产一区二区三区精品在线观看| 在线一区电影| 国产成人精品一区二区三区在线| 亚洲人成网77777色在线播放|