成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

Go語言怎么導入包

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

Go語言怎么導入包

本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言import導入包——在代碼中使用其他的代碼

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

默認導入的寫法

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

1) 單行導入

單行導入格式如下:

import "包1" import "包2"
登錄后復制

2) 多行導入

當多行導入時,包名在 import 中的順序不影響導入效果,格式如下:

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

導入包后自定義引用的包名

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

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

導入包的重命名只影響當前的源文件。其它的源文件如果導入了相同的包,可以用導入包原本默認的名字或重命名為另一個完全不同的名字。

導入包重命名是一個有用的特性,它不僅僅只是為了解決名字沖突。如果導入的一個包名很笨重,特別是在一些自動生成的代碼中,這時候用一個簡短名稱會更方便。選擇用簡短名稱重命名導入包時候最好統一,以避免包名混亂。選擇另一個包名稱還可以幫助避免和本地普通變量名產生沖突。例如,如果文件中已經有了一個名為 path 的變量,那么我們可以將"path"標準包重命名為 pathpkg。

每個導入聲明語句都明確指定了當前包和被導入包之間的依賴關系。如果遇到包循環導入的情況,Go語言的構建工具將報告錯誤。

匿名導入包——只導入包但不使用包內類型和數值

如果只希望導入包,而不使用任何包內的結構和類型,也不調用包內的任何函數時,可以使用匿名導入包,格式如下:

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

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

匿名導入的包與其他方式導入包一樣會讓導入包編譯到可執行文件中,同時,導入包也會觸發 init() 函數調用。

包在程序啟動前的初始化入口:init

在某些需求的設計上需要在程序啟動時統一調用程序引用到的所有包的初始化函數,如果需要通過開發者手動調用這些初始化函數,那么這個過程可能會發生錯誤或者遺漏。我們希望在被引用的包內部,由包的編寫者獲得代碼啟動的通知,在程序啟動時做一些自己包內代碼的初始化工作。

例如,為了提高數學庫計算三角函數的執行效率,可以在程序啟動時,將三角函數的值提前在內存中建成索引表,外部程序通過查表的方式迅速獲得三角函數的值。但是三角函數索引表的初始化函數的調用不希望由每一個外部使用三角函數的開發者調用,如果在三角函數的包內有一個機制可以告訴三角函數包程序何時啟動,那么就可以解決初始化的問題。

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

init() 函數的特性如下:

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

  • init() 函數會在程序執行前(main() 函數執行前)被自動調用。

  • 調用順序為 main() 中引用的包,以深度優先順序初始化。

例如,假設有這樣的包引用關系:main→A→B→C,那么這些包的 init() 函數調用順序為:

C.init→B.init→A.init→main
登錄后復制

說明:

  • 同一個包中的多個 init() 函數的調用順序不可預期。

  • init() 函數不能被其他函數調用。

理解包導入后的init()函數初始化順序

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

在運行時,被最后導入的包會最先初始化并調用 init() 函數。

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

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

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

代碼說明如下:

  • 第 3 行,導入 pkg1 包。

  • 第 7 行,調用 pkg1 包的 ExecPkg1() 函數。

代碼8-4 包導入初始化順序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") }
登錄后復制

代碼說明如下:

  • 第 4 行,導入 pkg2 包。

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

  • 第 12 行,調用 pkg2 包的 ExecPkg2() 函數。

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

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

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

代碼說明如下:

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

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

執行代碼,輸出如下:

pkg2 init pkg1 init ExecPkg1 ExecPkg2
登錄后復制

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
乌克兰少妇VIDEOS高潮| 老太性开放BBWBBWBBW| 欧美A片XⅩX黑人性受| 国产卡一卡二无线乱码| 欧美综合自拍亚洲综合图| 一本一道波多野毛片结衣AV黑人| 国产好深好硬好想要免费视频| 男朋友想吻我腿中间那个部位| 亚洲国产精品一区二区第一页| 国产精品免费视频网站| 我和几个亲戚都做了爱| 国产亲妺妺乱的性69视频播放 | 午夜不卡久久精品无码免费| 办公室揉弄震动嗯~动态图| 日本熟妇人妻XXXXX-欢迎您| 中文字幕亚洲综合小综合在线| 国产精品一区理论片| 啪啪无码人妻丰满熟妇| 撞击成熟美妇老师后臀| 欧洲精品久久久AV无码电影| 国产AV无码专区亚洲AV人妖| 亚洲AV日韩AV无码AV| 久久精品熟女亚洲AV麻豆网站| 亚洲AV熟女高潮30P| 国外AV无码精品国产精品| 无人区码一码二码三MBA| 国产精品成人网站| 无码人妻精品一区二区蜜桃视频| 成人毛片女18免费| 免费中文熟妇在线影片密芽| 亚洲免费成人av| 草莓视频在线播放视频| 午夜伦4480YY私人影院免费| 久久久久久久久久久精品| FIREEXⅩ性欧美HD护士| 婷婷妺妺窝人体色www久久| 国产精品亚洲综合网熟女| 性欧美丰满熟妇XXXX性久久久| 国精产品一区二区三区四区糖心| 亚洲熟妇成人精品一区| 美女裸体无遮挡永久免费视频AP | EEUSS影院在线观看| 色一情一乱一伦麻豆| 图片小说视频一区二区| 亚洲国产另类久久久精品黑人| 精品高潮呻吟99AV无码视频| 亚洲国产欧洲综合997久久| 精品麻豆一卡2卡三卡4卡乱码| 亚洲中文字幕无码第一区| 美女裸身裸乳免费视频的APP | 边做奶水边喷H高H共妻| 成人免费无遮挡在线播放| 色一情一乱一伦一区二区三欧美| 国产乱码日产精品BD| 亚洲AV永久综合在线观看尤物| 国产夫妻CCCXXX久久久| 视频一区二区三区在线观看蜜桃| 乖别添了快放进来我想要| 亚洲国产欧美在线看片一国产| 全棵女性艺术写真素材| 好男人日本社区WWW| 成年无码AV片在线| 夜夜精品浪潮AV一区二区三区| 人妻有码中文字幕| 精品国产精品久久一区免费式| 在线亚洲专区高清中文字幕 | 老子午夜理论影院理论| 成人4399看片HD免费| 无码任你躁久久久久久| 国产美足白丝榨精在线观看sm | 无码人妻精品一区二区三区夜夜嗨 | 国产精品无码电影在线观看| 亚洲乱码一区二三四区AVA| 男男gv在线观看| 国产96色在线 | 国| 综合无码一区二区三区| 玩弄人妻熟妇性色AV少妇| 久久九九久精品国产88| 蜜桃AV蜜臀AV色欲AV麻| 大粗鳮巴久久久久久久久| 14萝自慰专用网站| 亚洲精品无码久久久久SM| 偷拍与自偷拍亚洲精品| 日产精品久久久久久久| 老师的兔子好多软水好多动漫| 国产精品无码V在线观看| 79年熟女大胆露脸啪啪对白P| 亚洲AV成人无码久久精品老人| 女人为啥摸几下就让进了| 国产性猛交╳XXX乱大交| AAAAA级少妇高潮大片| 亚洲AV玩弄放荡人妇系列| 免费看又黄又无码的网站| 成熟丰满熟妇高潮XXXX| 一本色道久久88亚洲精品综合| 亚洲国产成人一区二区三区| 小SAO货边洗澡边CAO你| 无码国产精品一区二区免费16| 永久免费啪啪的网站入口| 久久婷婷五月综合色精品| 国产AV寂寞骚妇| 99国产精品久久久久久久成人热| 亚洲∧V久久久无码精品| 久久国产香蕉一区精品蜜桃| 国产成人A视频高清在线观看| 吃奶呻吟打开双腿做受动态图| 亚洲国产日韩欧美高清片| 日产2021一二三四免费| 久拍国产在线观看| 护士高潮喷水白浆| 久久亚洲中文字幕无码| 成人无码无遮挡很H在线播放| 亚洲AV综合色区无码二区爱AV| 日本人做暖免费高清视频| 欧美成妇人吹潮在线播放| 欧美人与物VIDEOS另类XX| 全球AV集中精品导航福利| 欧美人与牲动交XXXⅩ| 日韩丰满少妇无码内射| 特级毛片爽WWW免费版| 无码日韩人妻精品久久| 特大巨黑吊XXXX高潮| 人妻人人爽人人澡人人喊| 欧美猛少妇色XXXXⅩ| 欧美性生交XXXXX久久久| 欧美人与动牲交XXXXBBBB| 内射人妻深入内射| 久久久久亚洲精品男人的天堂 | 99RE6在线视频精品免费| JAPANESE丰满人妻HD| 成人精品无码一区二区三区| 公侵犯玩弄漂亮人妻优| 国内精品久久久久久影院| 久久久无码人妻精品无码| 免费乱码人妻系列无码专区 | 老师抱着我在教室做| 美女高潮黄又色高清视频免费| 美女露胸 0无挡挡| 欧美成在线精品视频| 女生让男生随便诵自己的名字| 蜜臀av无码少妇一区二区三区| 久久久亚洲欧洲日产国码农村| 韩国三级HD中文字幕| 久久AV喷吹AV高潮AV欧美 | 亚洲丰满熟妇浓毛XXXX| 野花社区在线观看免费直播WWW| 99亚洲精品卡2卡三卡4卡2卡| 丰满人妻被黑人中出849| 国产精品日日摸夜夜添夜夜添| 国产麻豆剧果冻传媒星空视频| 娇小亚洲人Ms黑人| 蜜桃国产精品乱码一区二区三区 | 老男人把舌头伸进我下面| 老司机精品成人无码AV| 免费下载破解看片APP的软件| 欧美伊人久久大香线蕉综合| 日日摸日日碰夜夜爽无码| 亚洲GAY片在线GV网站| 97精品伊人久久久大香线蕉| 国产精品美女WWW爽爽爽视频| 久久婷婷人人澡人人爽人人喊| 日本熟妇人妻XXXX| 亚洲精品无码不卡久久久久| 99久久人妻无码精品系列蜜桃| 国产Chinese男男视频| 久久精品无码中文字幕老司机| 内射合集对白在线| 好爽好湿好硬好大免费视频| 999久久久免费精品播放| 炖肉计(是今)海棠| 国内精品宾馆在线精品酒店| 丁香花在线视频完整版| 高黄暴H日本在线观看| 久久久久久久久精品成人| 上司人妻互换HD无码| 伊人久久大香线蕉AV仙人| 国产精品网站在线观看免费传媒 | 亚洲男男GAY 18自慰网站| 97SE亚洲国产综合自在线尤物| 国产AV永久精品无码| 老赵抱着媛媛在厨房做饭视频| 色噜噜狠狠色综合无码AV天堂| 亚洲国产另类久久久精品黑人| 97大学生情侣真实露脸在线| 国产啪精品视频网站免费| 米奇影院888奇米色| 无码熟妇人妻AV在线影片最多| 喑交小拗女一区二区三区| YY111111人妻影院| 久久久久久九九精品久| 亚洲AⅤ永久无码精品三区在线| 北条麻妃国产九九九精品视频| 麻豆专媒体一区二区| 亚洲日产精品一二三四区| 国精产品一二三区传媒公司| 天天影视性色香欲综合网| A级毛片成人网站免费看| 久久久久久久综合色一本| 思思久久99热只有频精品66| 中文无码一区二区视频在线播放量|