网络

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

相关资料

错误处理

Errors

https://github.com/juju/errors

非常实用的错误处理库。主要特点就是可以官方的方式处理错误,可附带额外的注释,而不至于丢失源错误上下文(包括文件和行号)。
就如文档中所述,错误处理变为:

  1. if err := SomeFunc(); err != nil {
  2. return errors.Annotate(err, "more context")
  3. }

errors

https://github.com/pkg/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 serverapp fetch等。
  • 完全符合 POSIX 的标志(包括短版和长版)
  • 嵌套子命令
  • 全局、本地和级联标志
  • 易产生的应用程序和命令与cobra initcobra 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/