1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Go語言包如何使用

      本篇內(nèi)容介紹了“Go語言包如何使用”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

      創(chuàng)新互聯(lián)-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、重慶服務(wù)器托管、等保安全、私有云建設(shè)等企業(yè)級互聯(lián)網(wǎng)基礎(chǔ)服務(wù),溝通電話:18980820575

      包(package)是多個(gè)Go源碼的集合,是一種高級的代碼復(fù)用方案。Go語言的包借助了目錄樹的組織形式,一般包的名稱就是其源文件所在目錄的名稱;包可以定義在很深的目錄中,包名的定義是不包括目錄路徑的,但是包在引用時(shí)一般使用全路徑引用。

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

      Golang 中的包與文件夾是一一對應(yīng)的,必須創(chuàng)建在 GOPATH 目錄下才可以被使用。Golang 中的一個(gè)包需要引用另一個(gè)包的內(nèi)容,那么必須在開始使用 import 關(guān)鍵字進(jìn)行導(dǎo)入才可以使用。

      任何源代碼文件必須屬于某個(gè)包,同時(shí)源碼文件的第一行有效代碼必須是package pacakgeName 語句,通過該語句聲明自己所在的包。

      包的基本概念

      Go語言的包借助了目錄樹的組織形式,一般包的名稱就是其源文件所在目錄的名稱,雖然Go語言沒有強(qiáng)制要求包名必須和其所在的目錄名同名,但還是建議包名和所在目錄同名,這樣結(jié)構(gòu)更清晰。

      包可以定義在很深的目錄中,包名的定義是不包括目錄路徑的,但是包在引用時(shí)一般使用全路徑引用。比如在GOPATH/src/a/b/ 下定義一個(gè)包 c。在包 c 的源碼中只需聲明為package c,而不是聲明為package a/b/c,但是在導(dǎo)入 c 包時(shí),需要帶上路徑,例如import "a/b/c"

      包的習(xí)慣用法:

      • 包名一般是小寫的,使用一個(gè)簡短且有意義的名稱。

      • 包名一般要和所在的目錄同名,也可以不同,包名中不能包含- 等特殊符號。

      • 包一般使用域名作為目錄名稱,這樣能保證包名的唯一性,比如 GitHub 項(xiàng)目的包一般會放到GOPATH/src/github.com/userName/projectName 目錄下。

      • 包名為 main 的包為應(yīng)用程序的入口包,編譯不包含 main 包的源碼文件時(shí)不會得到可執(zhí)行文件。

      • 一個(gè)文件夾下的所有源碼文件只能屬于同一個(gè)包,同樣屬于同一個(gè)包的源碼文件不能放在多個(gè)文件夾下。

      包的導(dǎo)入

      要在代碼中引用其他包的內(nèi)容,需要使用 import 關(guān)鍵字導(dǎo)入使用的包。具體語法如下:

      import "包的路徑"

      注意事項(xiàng):

      • import 導(dǎo)入語句通常放在源碼文件開頭包聲明語句的下面;

      • 導(dǎo)入的包名需要使用雙引號包裹起來;

      • 包名是從GOPATH/src/ 后開始計(jì)算的,使用/ 進(jìn)行路徑分隔。

      包的導(dǎo)入路徑

      包的引用路徑有兩種寫法,分別是全路徑導(dǎo)入和相對路徑導(dǎo)入。

      全路徑導(dǎo)入

      包的絕對路徑就是GOROOT/src/或GOPATH/src/后面包的存放路徑,如下所示:

      import "lab/test"
      import "database/sql/driver"
      import "database/sql"

      上面代碼的含義如下:

      • test 包是自定義的包,其源碼位于GOPATH/src/lab/test 目錄下;

      • driver 包的源碼位于GOROOT/src/database/sql/driver 目錄下;

      • sql 包的源碼位于GOROOT/src/database/sql 目錄下。

      相對路徑導(dǎo)入

      相對路徑只能用于導(dǎo)入GOPATH 下的包,標(biāo)準(zhǔn)包的導(dǎo)入只能使用全路徑導(dǎo)入。

      例如包 a 的所在路徑是GOPATH/src/lab/a,包 b 的所在路徑為GOPATH/src/lab/b,如果在包 b 中導(dǎo)入包 a ,則可以使用相對路徑導(dǎo)入方式。示例如下:

      // 相對路徑導(dǎo)入
      import "../a"

      當(dāng)然了,也可以使用上面的全路徑導(dǎo)入,如下所示:

      // 全路徑導(dǎo)入
      import "lab/a"

      包加載

      通過前面一系列的學(xué)習(xí)相信大家已經(jīng)大體了解了 Go 程序的啟動(dòng)和加載過程,在執(zhí)行 main 包的 mian 函數(shù)之前, Go 引導(dǎo)程序會先對整個(gè)程序的包進(jìn)行初始化。整個(gè)執(zhí)行的流程如下圖所示。

      Go語言包如何使用
      圖:Go 包的初始化

      Go語言包的初始化有如下特點(diǎn):

      • 包初始化程序從 main 函數(shù)引用的包開始,逐級查找包的引用,直到找到?jīng)]有引用其他包的包,最終生成一個(gè)包引用的有向無環(huán)圖。

      • Go 編譯器會將有向無環(huán)圖轉(zhuǎn)換為一棵樹,然后從樹的葉子節(jié)點(diǎn)開始逐層向上對包進(jìn)行初始化。

      • 單個(gè)包的初始化過程如上圖所示,先初始化常量,然后是全局變量,最后執(zhí)行包的 init 函數(shù)。

      Golang包使用總結(jié)

      Go 語言的源碼組織使用的是包的形式。Go 語言的 main 函數(shù)只有在 main 包里面才可以被系統(tǒng)執(zhí)行。

      “Go語言包如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


      新聞標(biāo)題:Go語言包如何使用
      分享路徑:http://www.ef60e0e.cn/article/jjspoe.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        精河县| 阳谷县| 通许县| 芜湖市| 咸阳市| 佛冈县| 饶平县| 海宁市| 堆龙德庆县| 龙海市| 岳普湖县| 榆树市| 洛隆县| 荔浦县| 洛宁县| 宁蒗| 略阳县| 五莲县| 民县| 阳原县| 且末县| 蒙山县| 喀喇沁旗| 吉安县| 扎囊县| 汶上县| 汉阴县| 都江堰市| 乌海市| 通州市| 温泉县| 沅陵县| 贵溪市| 彭阳县| 瑞金市| 夹江县| 仙桃市| 墨竹工卡县| 万源市| 那曲县| 上高县|