最近在学 Golang(Go语言),也在 Github 上找了一些基于 Golang 的优秀开源框架,在这里分享给大家。

一、Gin 框架(45.7k star)
Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 优于 httprouter,速度提高了近 40 倍。

Gin 框架的特性:

支持中间件,传入的 HTTP 请求可以由一系列中间件和最终操作来处理,例如:Logger等。
JSON 验证,Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
提供路由组,更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
内置渲染,Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。
错误管理方便,Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能,可扩展性好。
仓库地址:https://github.com/gin-gonic/gin

二、gorm 框架(22.8k star)
基于 Golang 开发的的 ORM 库。

gorm 框架的特性:

全功能 ORM
关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
Create,Save,Update,Delete,Find 中钩子方法
支持 Preload、Joins 的预加载
事务,嵌套事务,Save Point,Rollback To Saved Point
Context, Prepared Statement Mode, DryRun Mode
批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
SQL 构建器,Upsert,数据库锁
Optimizer/Index/Comment Hint,命名参数,子查询
复合主键,索引,约束
Auto Migration
自定义 Logger
灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
每个特性都经过了测试的重重考验
开发者友好
仓库地址:https://github.com/go-gorm/gorm

三、Viper 框架(14.7k star)
Viper 是一个适用于 Go 应用程序(包括12因子应用程序)的完整配置解决方案。它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。

Viper 框架的特性:

设置默认值
从JSON,TOML,YAML,HCL,envfile和Java属性配置文件中读取
实时观看和重新读取配置文件(可选)
从环境变量中读取
从远程配置系统(etcd或Consul)中读取,并观察更改
从命令行标志读取
从缓冲区读取设置显式值
你可以将 Viper 视为满足您所有应用程序配置需求的注册表。

仓库地址:https://github.com/spf13/viper

四、Go-MySQL-Driver 框架(10.5k star)
Go MySQL 驱动程序是 Golang 数据库、sql 包的 MySQL 驱动程序。

Go-MySQL-Driver 框架的特性:

轻巧快速
本机Go实施。没有C绑定,只有纯Go
通过TCP / IPv4,TCP / IPv6,Unix域套接字或自定义协议的连接
自动处理断开的连接
自动连接池(按数据库/ sql包)
支持大于16MB的查询
全面的sql.RawBytes支持
准备好的语句中的智能LONG DATA处理
通过文件允许列表和io.Reader支持来确保对LOAD DATA LOCAL INFILE的安全支持
可选时间,时间解析
可选的占位符插值
仓库地址:https://github.com/go-sql-driver/mysql

五、Go-Redis 框架(10.8k star)
用于 Golang 的类型安全的 Redis 客户端。

仓库地址:https://github.com/go-redis/redis

六、gin-swagger 框架(1.5k star)
基于 Gin 的中间件,以使用 Swagger 2.0 自动生成 RESTful API 文档。

仓库地址:https://github.com/swaggo/gin-swagger

智一面王老师说运维推荐初级Golang开发工程师在线评测:http://www.gtalent.cn/exam/interview/FM2N7xj54dQBPfUE

王老师说运维之go语言菜鸟入门:http://www.codeforest.cn/course/474