网络
Gin
https://github.com/gin-gonic/gin
它是一个web框架,聚焦于生产级和性能。包含很多特性,比如自定义中间件、静态文件服务和处理多种数据格式和HTML渲染。如果你要开发一个API或web应用,毫无疑问考虑使用Gin。
Iris
https://github.com/kataras/iris
Iris 是一个快速、简单但功能齐全且非常高效的 Go 网络框架。
它为您的下一个网站或 API 提供了一个极具表现力且易于使用的基础。
Beego
微服务
Go kit
依赖注入
Wire
https://github.com/google/wire
Wire 是一个代码生成工具,它使用依赖注入自动连接组件 。组件之间的依赖关系在 Wire 中表示为函数参数,鼓励显式初始化而不是全局变量。由于 Wire 在没有运行时状态或反射的情况下运行,因此编写用于 Wire 的代码即使对于手写初始化也很有用。
相关资料
测试
Ginkgo
https://github.com/onsi/ginkgo
Ginkgo 是一个 Go 测试框架,旨在帮助你有效地编写富有表现力的全方位测试。
与它最匹配的库是 Gomega ,但它的设计是与匹配器无关的。
这个文档假设你使用 Gomega 的 Ginkgo 。同时也假设你知道 Go 的使用方式并且对于 $GOPATH 目录下 Go 如何组织包有一个好的思维模型。
配置
Viper
https://github.com/spf13/viper
Viper 是 Go 应用程序的完整配置解决方案,包括 12-Factor 应用程序。它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持:
- 设置默认值
- 从 JSON、TOML、YAML、HCL、envfile 和 Java 属性配置文件中读取
- 实时观看和重新读取配置文件(可选)
- 从环境变量中读取
- 从远程配置系统(etcd 或 Consul)读取,并观察变化
- 从命令行标志读取
- 从缓冲区读取
- 设置显式值
文件
fsnotify
https://github.com/fsnotify/fsnotify
相关资料
- Go 每日一库之 fsnotify
接口
swag
Swag将Go的注释转换为Swagger2.0文档。我们为流行的 Go Web Framework 创建了各种插件,这样可以与现有Go项目快速集成(使用Swagger UI)。
错误处理
Errors
https://github.com/juju/errors
非常实用的错误处理库。主要特点就是可以官方的方式处理错误,可附带额外的注释,而不至于丢失源错误上下文(包括文件和行号)。
就如文档中所述,错误处理变为:
if err := SomeFunc(); err != nil {return errors.Annotate(err, "more context")}
errors
数据校验
validator
https://github.com/go-playground/validator
包验证器基于标签实现结构和单个字段的值验证。
它具有以下独特的功能:
- 使用验证标签或自定义验证器进行跨字段和跨结构验证。
- 切片、数组和映射潜水,允许验证多维字段的任何或所有级别。
- 能够深入研究映射键和值以进行验证
- 通过在验证之前确定它的基础类型来处理类型接口。
- 处理自定义字段类型,例如 sql 驱动程序 Valuer 请参阅Valuer
- 别名验证标签,允许将多个验证映射到单个标签,以便更轻松地定义结构上的验证
- 提取自定义定义的字段名称,例如可以指定在验证时提取 JSON 名称并使其在结果 FieldError 中可用
- 可定制的 i18n 感知错误消息。
- gin web 框架的默认验证器;在 gin 中从 v8 升级到 v9,请参见此处
身份验证
Authboss
https://github.com/volatiletech/authboss
Web 的模块化身份验证系统。它尝试删除尽可能多的样板文件和 “硬东西”,以便每次在 Go 中启动新的 Web 项目时,都可以将其插入,配置并开始构建应用程序,而不必每次都构建身份验证系统
jwt-go
https://github.com/dgrijalva/jwt-go
Cli
Cobra
https://github.com/spf13/cobra
Cobra 是一个库,它提供了一个简单的界面来创建类似于 git & go 工具的强大的现代 CLI 界面。
Cobra 也是一个应用程序,它将生成您的应用程序脚手架以快速开发基于 Cobra 的应用程序。
Cobra 提供:
- 简单易用的基于子-的CLI:
app server,app fetch等。 - 完全符合 POSIX 的标志(包括短版和长版)
- 嵌套子命令
- 全局、本地和级联标志
- 易产生的应用程序和命令与
cobra init&cobra add cmdname - 智能建议(
app srver…你的意思是app server?) - 命令和标志的自动帮助生成
-h、--help、 等的自动帮助标志识别。- 为您的应用程序自动生成 shell 自动完成功能(bash、zsh、fish、powershell)
- 为您的应用程序自动生成的手册页
- 命令别名,这样您就可以在不破坏它们的情况下更改内容
- 定义您自己的帮助、用法等的灵活性。
- 可选与viper无缝集成,用于 12 要素应用程序
graphql
graphql-go
https://github.com/graphql-go/graphql
GraphQL 在 Go 中的实现。遵循官方参考实现graphql-js。支持:查询、突变和订阅。
graphql-go
https://github.com/graph-gophers/graphql-go
WebScoket
ws
https://github.com/gobwas/ws
Go 中的 RFC6455 WebSocket 实现。
特点:
- 零拷贝升级
- I/O 期间没有中间分配
- 允许构建自己的数据包处理和缓冲区重用逻辑的低级 API
- wsutil包中API 的高级包装器和帮助器,允许快速启动而无需挖掘协议内部
websocket
https://github.com/nhooyr/websocket
websocket 是用于 Go 的最小且惯用的 WebSocket 库。数据库
GORM
https://gorm.io/
流处理器
Benthos
https://github.com/benthosdev/benthos
Benthos 是一个高性能和弹性的流处理器,能够以各种代理模式连接各种源和接收器,并对有效负载执行水合、浓缩、转换和过滤。
日志
zap
https://github.com/uber-go/zap
Go 中快速、结构化、分级的日志记录。
Json
https://github.com/json-iterator/go
其他
air
https://github.com/cosmtrek/air
Go 应用程序的实时重新加载
代码管理
Gitea
github https://github.com/go-gitea/gitea
官网 https://gitea.io/zh-cn/
