涵盖各种用例的有用 Go 包的精选列表
随着时间的推移,语言爱好者已经构建和共享了许多 Go 框架和库。
这些包执行不同的功能,从开发微服务到制作 discord 机器人,一直到构建 Web 应用程序!
在本文中,我将尝试让您熟悉一些有用的方法,这些方法是我在使用这种有趣的编程语言学习和构建应用程序时发现的。
注意:这绝不是一个详尽的列表,而是一个我喜欢并认为有趣的软件包列表,可以尝试并希望与世界分享。:)
事不宜迟,让我们开始探索一些新的软件包:
静态网站生成
对于通常用于构建后端 API 和微服务的编程语言来说,这是一个相对较新的领域,因此有点新鲜感迫在眉睫。
- Hugo:一个很棒的包,可以让你在没有后端互连的情况下构建静态网站,全部用 Go 编写。
它还号称是同类中最快的静态 Web 框架,每页加载时间<1 毫秒,平均网站构建时间不到一秒。
它旨在适用于任何类型的网站,包括博客和托管文档。最棒的是,您也可以在GitHub 页面上免费托管您的静态网站!
安装 Hugo 包可以通过常规的自制软件安装、 Docker甚至命令来完成go install
。
处理配置文件
配置文件通常以各种格式编写,例如 JSON 和 YAML。Go 有一个非常有用的包,可以让读写各种配置文件格式变得轻而易举。
- Viper:这是一个完整的 Go 应用程序配置解决方案,包括 12-Factor 应用程序。它专为在应用程序中工作而设计,可以处理所有类型的配置需求和格式。
该软件包的一些巧妙功能包括:
- 从 JSON、TOML、YAML、HCL、.env 和 Java 属性配置格式中读取
- 实时观看和重读配置文件
- 从环境变量中读取
命令行接口程序
对于构建 CLI 应用程序,Go 有一个很棒的库,让这一切变得轻而易举。
- Cobra:一个强大的库,用于创建基于 Go 的 CLI 应用程序。
该框架的一些重要功能包括:
- 它与配置文件的 Viper 库有强大的集成
- 它支持常规子命令、嵌套子命令,并有助于对相似命令进行分组
- 完全符合 POSIX 标准的标志(包括短版和长版)
环境变量
Go 有许多软件包可以更轻松地读取存储各种被视为应用程序机密的.env
文件。
其中有一个这样开源仓库是:
-
GoDotEnv:它拥有从文件中读取变量的最简单的设置和用法
.env
,并且使用起来也非常轻巧。
构建自动化
旨在通过简单、简洁的命令帮助执行任务的自动化工具。
您可能已经知道的一种流行工具是Make命令,它可以帮助我们使用Makefiles的任务自动化。一个好的开发实践是在 Makefile 中保留要执行的命令列表,我们可以在以后轻松引用并使用简单的 make 命令执行。
- 任务:这个库拥有更多的冗长性,因此执行命令的可解释性略好于 Make。它也没有依赖性,相比之下非常轻量级。
主动编译(热加载)
-
Air:这是一个很棒的实用程序Go包,可以帮助重建和执行项目的
main.go
。自动编译几乎任何文件(如我们所愿),而无需我们每次都run
来运行它。
Web开发
以下是定期维护的前两个 Web 框架:
Gin Web Framework:这是最流行的 Go 网络开发库,并且有很多充分的理由。
Iris Web Framework:这也是在 Go 中构建高性能 Web 应用程序和 API 的另一种选择。如果你以前使用过ExpressJS,你会觉得有点熟悉。
日期时间管理
- Carbon:这是一个很棒的轻量级、易于使用且语义智能的日期时间库,适用于 Go 开发人员。
数据库对象关系管理
- Gorm:这是最容易使用的对象关系映射 (ORM) Go 库,我有幸使用过三种主要的数据库 SQLite、PostgreSQL 和 MySQL。
微服务
微服务通常用于带有 Docker 和 Kubernetes 的容器化架构,以构建健壮的应用程序。以下是几个 Go 微服务包:
Discord 机器人
- DiscordGo:这是 Discord API 函数最有用的 API 包装器,具有出色的模块化结构,包含您可能需要的所有主要 discord 机器人操作。
网页抓取
- Colly:这是一个很棒的 Go 网络抓取器和爬虫框架,特别适用于归档和数据挖掘目的。
杂项提及
Go-redis:这是一个很棒的、高度维护的用于 Go 的 redis 数据库客户端。它适用于 redis 6 和 7,并且设置过程非常简单。强烈推荐。
go-elasticsearch — 这是 Go 的官方 Elasticsearch 客户端。
graphql-go:这是 GraphQL 在 Go 中的实现,支持查询、突变和订阅。
我希望这是对 Go 中一些仓库的有用介绍。