首頁  >  文章  >  後端開發  >  golang包的特性是什麼

golang包的特性是什麼

青灯夜游
青灯夜游原創
2023-01-13 16:56:561977瀏覽

特性:1、包名一般是小寫,用一個簡短且有意義的名稱;2、包名一般要和所在的目錄同名,也可不同名,包名中不能包含“-”等特殊符號;3、包一般使用網域名稱作為目錄名稱,這樣能保證包名的唯一性;4、包名為main的包為應用程式的入口包,編譯源碼時如果沒有main包時,將無法編譯輸出可執行的檔案;5、一個目錄下的所有原始碼檔案只能屬於同一個包,同樣屬於同一個包的源碼檔案不能放在多個目錄下。

golang包的特性是什麼

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

Go語言是使用套件來組織原始碼的,套件(package)是多個 Go 原始碼的集合,是一種高階的程式碼多用方案。 Go語言中為我們提供了許多內建包,如 fmt、os、io 等。

任何原始碼檔案必須屬於某個套件,同時原始碼檔案的第一行有效程式碼必須是package pacakgeName 語句,透過該語句宣告自己所在的套件。

套件的基本概念

Go語言的套件借助了目錄樹的組織形式,一般套件的名稱就是其原始檔案所在目錄的名稱,雖然Go語言沒有強制要求包名必須和其所在的目錄名同名,但還是建議包名和所在目錄同名,這樣結構更清晰。

套件可以定義在很深的目錄中,套件名稱的定義是不包含目錄路徑的,但是套件在引用時一般使用全路徑引用。例如在GOPATH/src/a/b/ 下定義一個套件 c。在套件c 的原始碼中只需宣告為package c,而不是宣告為package a/b/c,但在導入c 套件時,需要帶上路徑,例如 import "a/b/c"

Go語言套件特性

  • #套件名稱一般是小寫的,使用一個簡短且有意義的名稱;

  • 套件名稱一般要和所在的目錄同名,也可以與其目錄不同名稱(但最好不要這樣做),包名中不能包含- 等特殊符號。

  • 套件一般會使用網域名稱作為目錄名稱,這樣可以保證套件名稱的唯一性,例如GitHub 專案的套件一般會放到GOPATH/src/github.com/userName /projectName 目錄下。

  • 套件名為 main 的套件為應用程式的入口包,編譯不包含 main 套件的源碼檔案時不會得到可執行檔。

  • 一個資料夾下的所有原始碼檔案只能屬於同一個包,同樣屬於同一個包的源碼檔案不能放在多個資料夾下。

Go語言套件設計想法

#任何套件系統設計的目的都是為了簡化大型程式的設計和維護工作,透過將一組相關的特性放進一個獨立的單元以便於理解和更新,在每個單元更新的同時保持和程序中其它單元的相對獨立性。這種模組化的特性允許每個包可以被其它的不同項目共享和重用,在項目範圍內、甚至全球範圍統一的分發和復用。

每個套件一般都定義了一個不同的名字空間用於它內部的每個識別碼的存取。每個名字空間關聯到一個特定的包,讓我們給 類型、函數 等選擇一個簡短明了的名字,這樣可以避免在我們使用它們的時候減少和其它部分名字的衝突。

當我們修改了一個原始文件,我們必須重新編譯該原始檔案對應的套件和所有依賴該套件的其他套件。即使是從頭開始構建,Go 語言編譯器的編譯速度也明顯快於其它編譯語言。 Go 語言的閃電般的編譯速度主要得益於三個語言特性。

明確聲明

所有導入的套件必須在每個文件的開頭明確聲明,這樣的話編譯器就沒有必要讀取和分析整個源文件來判斷包的依賴關係。

禁止循環依賴

禁止包的環狀依賴,因為沒有循環依賴,包的依賴關係形成一個有向無環圖,每個包可以被獨立編譯,而且很可能是被並發編譯。

目標檔案

編譯後套件的目標檔案不只記錄套件本身的匯出訊息,目標檔案同時也記錄了套件的依賴關係。因此,在編譯一個套件的時候,編譯器只需要讀取每個直接導入套件的目標文件,而不需要遍歷所有依賴的文件。

【相關推薦:Go影片教學程式設計教學

以上是golang包的特性是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:goland是什麼下一篇:goland是什麼