」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 了解 Go 中的套件和模組!

了解 Go 中的套件和模組!

發佈於2024-11-06
瀏覽:137

Entendendo pacotes e modulos em Go!


解開 Go 中的套件和模組:我一開始不明白的地方

當我開始用 Go 程式設計時,我已經在 C 方面打下了良好的基礎,這是我的第一個程式語言。這對我幫助很大,因為 Go 與 C 有很多共同點——從簡單性到表現。更少的關鍵字、更低的複雜性以及更平滑的學習曲線。但接下來的部分讓我有點迷失:套件、模組和 go mod.

之類的東西

我記得我在想:「我只想編譯一個簡單的程序,為什麼我需要擔心包?」那麼模組呢?它們似乎憑空出現,每個人都說它們對於管理依賴關係至關重要。但別擔心,我會以簡單的方式為那些已經編程但尚未掌握 Go 中這些內容的人解釋所有內容。

Go 中的套件:劃分與組織程式碼

首先,Go 中包的概念與您在 C 中看到的非常相似。將套件視為組織和重複使用程式碼的一種方式。在 C 中,當您將函數分成 .h 和 .c 檔案時,在 Go 中您會執行類似的操作,但使用套件。每個包都會將功能分組,並允許您匯入程式碼其他部分所需的內容。

例如,您可以將它們分成包,而不是將所有函數放入一個文件中:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

這裡,fmt 是一個標準函式庫包,負責 I/O 格式化。導入時,您可以存取其功能。並且您可以用相同的方式創建自己的包,使程式碼維護和組織更容易。

那麼 go 模組呢?

現在,模組部分。這就是事情變得有趣的地方。如果套件就像 C 中的函式庫,那麼模組就像管理所有這些的「超級套件」。它們允許您的專案以有組織且安全的方式輕鬆下載和使用第三方軟體包。

go mod 是幫助您配置專案以使用這些模組的命令。當您使用 go mod init 啟動一個新專案時,您實際上正在建立一個 Go 將用來管理依賴項的配置。這意味著它將自動下載您的專案所需的套件(無需像在 C 中那樣手動下載)。

例如:

go mod init meu-projeto
go get github.com/pacote/fantastico

透過這些命令,Go 會建立 go.mod 文件,該文件儲存有關專案依賴項的資訊。然後,當您執行 go build 時,Go 會直接從網路下載編譯所需的所有內容,而您無需擔心。

簡而言之...

當您將程式碼組織到套件中並使用模組來管理依賴項時,Go 會變得更有效率。一開始它可能看起來令人困惑(我也沒有立即理解它),但是一旦掌握了它,您就會意識到包和模組使您的程式碼更具可擴展性和更簡潔。一切都進展得更好,尤其是在大型專案中。


版本聲明 本文轉載於:https://dev.to/nivicius/entendendo-pacotes-e-modulos-em-go-2k3?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 ; $ date->修改('1個月'); //前進1個月 echo $ date->...
    程式設計 發佈於2025-07-13
  • 我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    將我的加密庫從mcrypt升級到openssl 問題:是否可以將我的加密庫從McRypt升級到OpenSSL?如果是這樣,如何? 答案:是的,可以將您的Encryption庫從McRypt升級到OpenSSL。 可以使用openssl。 附加說明: [openssl_decrypt()函數要求...
    程式設計 發佈於2025-07-13
  • 如何在無序集合中為元組實現通用哈希功能?
    如何在無序集合中為元組實現通用哈希功能?
    在未訂購的集合中的元素要糾正此問題,一種方法是手動為特定元組類型定義哈希函數,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    程式設計 發佈於2025-07-13
  • Java數組中元素位置查找技巧
    Java數組中元素位置查找技巧
    在Java數組中檢索元素的位置 利用Java的反射API將數組轉換為列表中,允許您使用indexof方法。 (primitives)(鏈接到Mishax的解決方案) 用於排序陣列的數組此方法此方法返回元素的索引,如果發現了元素的索引,或一個負值,指示應放置元素的插入點。
    程式設計 發佈於2025-07-13
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-07-13
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-13
  • 在JavaScript中如何並發運行異步操作並正確處理錯誤?
    在JavaScript中如何並發運行異步操作並正確處理錯誤?
    同意操作execution 在執行asynchronous操作時,相關的代碼段落會遇到一個問題,當執行asynchronous操作:此實現在啟動下一個操作之前依次等待每個操作的完成。要啟用並發執行,需要進行修改的方法。 第一個解決方案試圖通過獲得每個操作的承諾來解決此問題,然後單獨等待它們: c...
    程式設計 發佈於2025-07-13
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call fil...
    程式設計 發佈於2025-07-13
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-07-13
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-07-13
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-07-13
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-07-13
  • 如何同步迭代並從PHP中的兩個等級陣列打印值?
    如何同步迭代並從PHP中的兩個等級陣列打印值?
    同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
    程式設計 發佈於2025-07-13
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-07-13
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-07-13

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3