gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

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

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號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
久久久久久综合网| 97视频久久久| 青青青在线视频免费观看| www.69av| 51自拍视频在线观看| 免费成年人高清视频| 污视频网站观看| 性生活免费在线观看| 久久久精品在线视频| 精品视频无码一区二区三区| 亚洲男人天堂色| 超碰在线人人爱| 国产无遮挡猛进猛出免费软件| 国产精品亚洲二区在线观看| 爱情岛论坛vip永久入口| 欧美美女性视频| 天天综合中文字幕| 黄色成人在线免费观看| 日本a在线免费观看| 777久久久精品一区二区三区| 精品视频免费在线播放| 日韩免费高清在线| 久久出品必属精品| 大荫蒂性生交片| 日韩 欧美 高清| 女人高潮一级片| 亚洲精品蜜桃久久久久久| 欧美成人xxxxx| 在线a免费观看| 六月丁香激情网| www.污污视频| 欧美色图色综合| 超碰中文字幕在线观看| 国产成人在线免费看| 污污网站在线观看视频| 丁香六月激情网| 色噜噜狠狠永久免费| 国产69精品久久久久999小说| 成人三级视频在线播放| 九一免费在线观看| www.99av.com| 日韩小视频在线播放| 在线黄色免费看| 欧美日韩黄色一级片| 在线观看免费黄色片| 成人在线观看黄| 国产精品va在线观看无码| 性欧美1819| 国产极品美女高潮无套久久久| 91大学生片黄在线观看| 亚洲综合123| 国产一伦一伦一伦| 毛片av免费在线观看| 91九色丨porny丨国产jk| 日韩av福利在线观看| 天天色综合天天色| heyzo国产| 国产亚洲黄色片| 粉嫩av一区二区三区天美传媒| 国产成人黄色网址| jizz欧美激情18| 欧美 日韩 亚洲 一区| 美女av免费观看| 黄黄视频在线观看| 五月天av在线播放| 亚洲一级免费观看| 美女在线视频一区二区| 99热手机在线| 91制片厂毛片| 日本高清久久久| 日本不卡一区二区在线观看| 一区二区三区免费播放| 国产v亚洲v天堂无码久久久| 久久久久久久久久久福利| 2022亚洲天堂| 亚欧美在线观看| 三级性生活视频| 99中文字幕在线观看| 日本一区二区三区四区五区六区| 日韩第一页在线观看| 中文字幕黄色大片| 欧美国产综合在线| 草草久久久无码国产专区| 免费裸体美女网站| 国产成年人视频网站| 日本女人高潮视频| 国产亚洲黄色片| 国产精彩免费视频| 久久久国产精华液999999| 999热精品视频| www.夜夜爱| av网站在线不卡| 一本二本三本亚洲码| 欧美乱大交xxxxx潮喷l头像| 大肉大捧一进一出好爽动态图| 少妇一级淫免费播放| 日韩欧美猛交xxxxx无码| 欧美xxxxx在线视频| 91精品国产吴梦梦| 日韩毛片在线免费看| 影音先锋成人资源网站| 国产综合免费视频| 日本三级中文字幕在线观看| 日本一本二本在线观看| 日韩在线不卡一区| 91猫先生在线| 国产在线拍揄自揄拍无码| 嫩草av久久伊人妇女超级a| 麻豆一区二区三区在线观看| 欧美 日本 亚洲| 国产高清av片| 88av.com| 和岳每晚弄的高潮嗷嗷叫视频| 久久艹这里只有精品| 99热成人精品热久久66| 国内外成人激情免费视频| 国产精品久久久毛片| 不卡影院一区二区| 毛片av在线播放| 一道本在线观看视频| 久久精品香蕉视频| 热99这里只有精品| 一二三在线视频| 不卡的在线视频| 50路60路老熟妇啪啪| 2018国产在线| 欧美一级中文字幕| 黄色www在线观看| 成年网站免费在线观看| 中文字幕第80页| 丁香婷婷激情网| 欧美日韩在线视频一区二区三区| 国产又粗又长又爽视频| 男女激烈动态图| 18视频在线观看娇喘| 中文字幕の友人北条麻妃| 手机在线视频你懂的| 欧美日韩亚洲国产成人| 欧美aaa在线观看| 亚洲综合123| 久久天天东北熟女毛茸茸| 91精品国产毛片武则天| 无码人妻精品一区二区蜜桃百度| 欧美一级视频在线| 懂色av粉嫩av蜜臀av| 久久久无码中文字幕久...| 做爰高潮hd色即是空| 成人av在线不卡| 成人一对一视频| 黄色高清无遮挡| 三区视频在线观看| 久久av秘一区二区三区| www污在线观看| 日本黄色三级大片| xxxx在线免费观看| 18视频在线观看娇喘| 欧美亚洲精品一区二区| 中文字幕国产免费| 欧美做受777cos| 日韩欧美在线播放视频| 日韩一区二区三区不卡视频| 久久久成人精品一区二区三区| 成人高清dvd| 日韩爱爱小视频| 特级西西人体www高清大胆| 欧美黑人经典片免费观看| 杨幂毛片午夜性生毛片 | 国产1区2区在线| 亚洲黄色av片| 和岳每晚弄的高潮嗷嗷叫视频 | 在线观看18视频网站| 777久久久精品一区二区三区| 中文字幕天天干| 欧美日韩中文字幕在线播放| 9久久9毛片又大又硬又粗| 欧美精品 - 色网| 欧美视频第三页| 欧美a级免费视频| 三级av免费观看| 久久综合久久久久| 99999精品| 无尽裸体动漫2d在线观看| 黄色一级视频在线播放| 中文字幕12页| wwwwww.色| 久久综合九色综合88i| 欧美精品一区二区性色a+v| 亚洲狼人综合干| 久久久久久久久久久视频| 中文字幕在线乱| av免费一区二区| 色婷婷狠狠18| 国产熟女高潮视频| 女人和拘做爰正片视频| 男人添女人下部视频免费| 精品国产鲁一鲁一区二区三区| 性生交免费视频| 日本人视频jizz页码69| 一本大道熟女人妻中文字幕在线| 福利在线一区二区|