涵蓋各種用例的有用 Go 包的精選列表

隨著時間的推移,語言愛好者已經(jīng)構(gòu)建和共享了許多 Go 框架和庫。
這些包執(zhí)行不同的功能,從開發(fā)微服務(wù)到制作 discord 機器人,一直到構(gòu)建 Web 應(yīng)用程序!
在本文中,我將嘗試讓您熟悉一些有用的方法,這些方法是我在使用這種有趣的編程語言學(xué)習(xí)和構(gòu)建應(yīng)用程序時發(fā)現(xiàn)的。
注意:這絕不是一個詳盡的列表,而是一個我喜歡并認為有趣的軟件包列表,可以嘗試并希望與世界分享。:)
事不宜遲,讓我們開始探索一些新的軟件包:
靜態(tài)網(wǎng)站生成
對于通常用于構(gòu)建后端 API 和微服務(wù)的編程語言來說,這是一個相對較新的領(lǐng)域,因此有點新鮮感迫在眉睫。
- Hugo:一個很棒的包,可以讓你在沒有后端互連的情況下構(gòu)建靜態(tài)網(wǎng)站,全部用 Go 編寫。
它還號稱是同類中最快的靜態(tài) Web 框架,每頁加載時間<1 毫秒,平均網(wǎng)站構(gòu)建時間不到一秒。
它旨在適用于任何類型的網(wǎng)站,包括博客和托管文檔。最棒的是,您也可以在GitHub 頁面上免費托管您的靜態(tài)網(wǎng)站!
安裝 Hugo 包可以通過常規(guī)的自制軟件安裝、 Docker甚至命令來完成go install。
處理配置文件
配置文件通常以各種格式編寫,例如 JSON 和 YAML。Go 有一個非常有用的包,可以讓讀寫各種配置文件格式變得輕而易舉。
- Viper:這是一個完整的 Go 應(yīng)用程序配置解決方案,包括 12-Factor 應(yīng)用程序。它專為在應(yīng)用程序中工作而設(shè)計,可以處理所有類型的配置需求和格式。
該軟件包的一些巧妙功能包括:
- 從 JSON、TOML、YAML、HCL、.env 和 Java 屬性配置格式中讀取
- 實時觀看和重讀配置文件
- 從環(huán)境變量中讀取
命令行接口程序
對于構(gòu)建 CLI 應(yīng)用程序,Go 有一個很棒的庫,讓這一切變得輕而易舉。
- Cobra:一個強大的庫,用于創(chuàng)建基于 Go 的 CLI 應(yīng)用程序。
該框架的一些重要功能包括:
- 它與配置文件的 Viper 庫有強大的集成
- 它支持常規(guī)子命令、嵌套子命令,并有助于對相似命令進行分組
- 完全符合 POSIX 標準的標志(包括短版和長版)
環(huán)境變量
Go 有許多軟件包可以更輕松地讀取存儲各種被視為應(yīng)用程序機密的.env文件。
其中有一個這樣開源倉庫是:
-
GoDotEnv:它擁有從文件中讀取變量的最簡單的設(shè)置和用法
.env,并且使用起來也非常輕巧。
構(gòu)建自動化
旨在通過簡單、簡潔的命令幫助執(zhí)行任務(wù)的自動化工具。
您可能已經(jīng)知道的一種流行工具是Make命令,它可以幫助我們使用Makefiles的任務(wù)自動化。一個好的開發(fā)實踐是在 Makefile 中保留要執(zhí)行的命令列表,我們可以在以后輕松引用并使用簡單的 make 命令執(zhí)行。
- 任務(wù):這個庫擁有更多的冗長性,因此執(zhí)行命令的可解釋性略好于 Make。它也沒有依賴性,相比之下非常輕量級。
主動編譯(熱加載)
-
Air:這是一個很棒的實用程序Go包,可以幫助重建和執(zhí)行項目的
main.go。自動編譯幾乎任何文件(如我們所愿),而無需我們每次都run來運行它。
Web開發(fā)
以下是定期維護的前兩個 Web 框架:
Gin Web Framework:這是最流行的 Go 網(wǎng)絡(luò)開發(fā)庫,并且有很多充分的理由。
Iris Web Framework:這也是在 Go 中構(gòu)建高性能 Web 應(yīng)用程序和 API 的另一種選擇。如果你以前使用過ExpressJS,你會覺得有點熟悉。
日期時間管理
- Carbon:這是一個很棒的輕量級、易于使用且語義智能的日期時間庫,適用于 Go 開發(fā)人員。
數(shù)據(jù)庫對象關(guān)系管理
- Gorm:這是最容易使用的對象關(guān)系映射 (ORM) Go 庫,我有幸使用過三種主要的數(shù)據(jù)庫 SQLite、PostgreSQL 和 MySQL。
微服務(wù)
微服務(wù)通常用于帶有 Docker 和 Kubernetes 的容器化架構(gòu),以構(gòu)建健壯的應(yīng)用程序。以下是幾個 Go 微服務(wù)包:
Echo:該框架支持RESTful API設(shè)計,是最流行的 Go 微服務(wù)框架。
go-micro:這個庫是同一領(lǐng)域的另一個很好的選擇,具有內(nèi)置的身份驗證和數(shù)據(jù)存儲設(shè)計。確實很方便。
Discord 機器人
- DiscordGo:這是 Discord API 函數(shù)最有用的 API 包裝器,具有出色的模塊化結(jié)構(gòu),包含您可能需要的所有主要 discord 機器人操作。
網(wǎng)頁抓取
- Colly:這是一個很棒的 Go 網(wǎng)絡(luò)抓取器和爬蟲框架,特別適用于歸檔和數(shù)據(jù)挖掘目的。
雜項提及
Go-redis:這是一個很棒的、高度維護的用于 Go 的 redis 數(shù)據(jù)庫客戶端。它適用于 redis 6 和 7,并且設(shè)置過程非常簡單。強烈推薦。
go-elasticsearch — 這是 Go 的官方 Elasticsearch 客戶端。
graphql-go:這是 GraphQL 在 Go 中的實現(xiàn),支持查詢、突變和訂閱。
我希望這是對 Go 中一些倉庫的有用介紹。