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一区二区
91丝袜超薄交口足| 亚洲欧美一二三| www.久久久精品| 中文字幕在线乱| 熟女少妇精品一区二区| 欧美日韩一级在线| 国产精彩免费视频| 亚洲中文字幕无码专区| 久久久久国产一区| 各处沟厕大尺度偷拍女厕嘘嘘| 久草综合在线观看| 日韩成人手机在线| 亚洲日本黄色片| 少妇人妻互换不带套| 国产永久免费网站| 干日本少妇首页| 欧美丰满熟妇xxxxx| 成人性免费视频| 最新视频 - x88av| 91免费视频黄| 亚洲精品一二三四五区| 免费拍拍拍网站| 福利视频免费在线观看| 91丝袜超薄交口足| 欧洲在线免费视频| 亚洲天堂2018av| 免费看污污视频| 400部精品国偷自产在线观看 | 超碰成人免费在线| 自拍日韩亚洲一区在线| 午夜精品久久久久久久无码 | 男插女免费视频| 蜜臀av.com| 蜜臀av午夜一区二区三区| 五十路熟女丰满大屁股| 国产69精品久久久久久久| 美女日批免费视频| 久久久久免费精品| 超碰97免费观看| 日韩在线视频在线| 草草视频在线免费观看| 国产精品少妇在线视频| 国产真实乱子伦| 天天干天天玩天天操| 国产av第一区| 日本不卡一区二区在线观看| 青青草综合视频| 美女网站视频黄色| 激情伊人五月天| 波多野结衣网页| 国产又大又黄又粗的视频| 很污的网站在线观看| 国产嫩草在线观看| 日韩国产欧美亚洲| 欧美激情第四页| 亚洲污视频在线观看| 黄在线观看网站| 亚洲 高清 成人 动漫| wwwwww欧美| 国风产精品一区二区| www.欧美黄色| www.射射射| 香港日本韩国三级网站| 天天在线免费视频| 男女污污的视频| 久久精品一二三四| 黑森林精品导航| avove在线观看| www.这里只有精品| 成人免费性视频| 国产日本欧美在线| 亚欧在线免费观看| 熟女视频一区二区三区| 精品国偷自产一区二区三区| 日本网站在线看| 91麻豆天美传媒在线| 超碰在线免费观看97| 日韩欧美黄色大片| 91免费国产精品| 亚洲综合123| 久久无码高潮喷水| 日韩在线一区视频| 国产1区2区在线| 国产系列第一页| 2022亚洲天堂| 91动漫在线看| 九色porny91| 欧美成人乱码一二三四区免费| 国产女教师bbwbbwbbw| 国产精品成人久久电影| 国产性生活一级片| 蜜桃网站在线观看| 久艹在线免费观看| 激情成人在线观看| 手机av在线网| 91九色国产ts另类人妖| 黄色网zhan| 国产淫片av片久久久久久| 国产视频九色蝌蚪| 欧美三级一级片| 无遮挡又爽又刺激的视频| 欧美精品色婷婷五月综合| 国产日本在线播放| 热久久精品国产| 天堂av在线8| 国产一级爱c视频| 欧美黄色免费影院| 男女啪啪网站视频| 日本特黄在线观看| 久色视频在线播放| 国产精品69页| www.夜夜爱| 免费av不卡在线| 国产免费内射又粗又爽密桃视频 | 国产免费观看高清视频| 欧美私人情侣网站| 久草视频国产在线| 午夜激情福利在线| 欧美视频在线第一页| 午夜久久福利视频| 成人午夜激情av| 凹凸国产熟女精品视频| 成年人网站av| 日本不卡一区二区在线观看| 人妻av无码专区| 精品久久一二三| 日本一区午夜艳熟免费| 91麻豆天美传媒在线| 91香蕉视频导航| 色七七在线观看| 日本激情视频在线播放| 在线免费视频一区| 五月天婷婷亚洲| 成人黄色片视频| 99精品免费在线观看| 久久综合久久色| 免费午夜视频在线观看| 免费无码av片在线观看| 国产91在线免费| 亚洲欧美日韩一级| www.久久com| 青青青青在线视频| 国产最新免费视频| 国产中文字幕免费观看| 国产精品一区二区小说| 成人av毛片在线观看| 国产一级片中文字幕| 人人妻人人添人人爽欧美一区| 日本网站免费在线观看| www亚洲成人| 久久国产精品网| 日本在线观看免费视频| 91香蕉视频免费看| 国产乱子夫妻xx黑人xyx真爽| 日本www在线播放| 99亚洲精品视频| 中日韩av在线播放| 亚洲精品中文字幕无码蜜桃| 丝袜人妻一区二区三区| 天堂v在线视频| 日韩爱爱小视频| 国产精品va无码一区二区| 手机福利在线视频| 九九久久久久久| 日本中文字幕二区| 国产视频手机在线播放| 日韩av在线综合| 成年人在线观看视频免费| 国产伦精品一区二区三区四区视频_ | 午夜激情福利在线| 日本一本中文字幕| 青青草综合视频| 免费观看中文字幕| 午夜剧场高清版免费观看| 99精品999| 99久久久精品视频| 欧美第一页浮力影院| www.com久久久| 欧美高清中文字幕| 人妻av中文系列| 国产免费视频传媒| 手机av在线免费| 女人床在线观看| 午夜免费福利小电影| 免费在线观看日韩视频| 天天综合网日韩| 超碰97在线看| 成人午夜视频免费观看| 精品国偷自产一区二区三区| 国产成人无码精品久久久性色| 久久综合久久色| 免费的一级黄色片| 国产素人在线观看| 人妻丰满熟妇av无码区app| 狠狠操精品视频| av在线观看地址| 成年人视频网站免费观看| 国内自拍第二页| 日本男女交配视频| 300部国产真实乱|