Go 语言优秀资源整理,为项目落地加速🏃

GitHub 上稳定更新,觉得不错请点个 Star ❤️

如转载分享,请保留出处,谢谢 😆

原文地址: https://shockerli.net/post/go-awesome

GitHub: https://github.com/shockerli/go-awesome


官网: https://golang.org

国内官网镜像(访问快~): https://golang.google.cn

GitHub: https://github.com/golang/go

开发者平台: https://go.dev

Wiki: https://github.com/golang/go/wiki

官方博客: https://blog.golang.org

指导原则

  • 简单性

    复杂性把可读的程序变得不可读,复杂性终结了很多软件项目。

  • 可读性

    代码是给人看的,代码阅读时长远超编写。程序必须可维护,那可读是第一步。

  • 生产率

    拥有众多的工具集和基础库,可以很简单方便的完成绝大多数工作。 编译速度足够快,拥有动态语言的高效,但却不会面临动态语言不可靠的问题。 自带编程规范,使得团队代码一致,也帮助开发者发现和避免潜在的错误。

Awesome

大牛

Go 语言方面的大牛,或者优秀 Go 项目的组织

文档

指南

文章

付费教程

成品项目

  • studygolang - Go 语言中文网
  • Hugo - 静态网站生成器
  • jrnl - 静态网站生成器
  • mkcert - 生成本地 HTTPS 加密证书的工具
  • Rainbond - 基于Docker、Kubernetes等容器技术的开源PaaS
  • NYADB2 - Go 实现的关系型数据库, 值得用于学习
  • EiBlog - 国产 博客
  • pan-light - 不限速的百度网盘客户端, 基于 Go + Qt5 开发
  • BaiduPCS-Go - 百度网盘客户端
  • daily-warm - 每天定时发邮件给你关心的人
  • pipe - 博客平台
  • mdr - 命令行下的 Markdown 阅读工具
  • 链滴笔记 - 桌面端笔记应用

学习项目

  • 1m-go-websockets - 该项目演示了如何用 Go 编写一个可以提供超过一百万个 websockets 连接、运行内存小于 1GB 的服务器
  • Go by Example - 通过实例学习 Go

开源类库

Web 框架

业务框架

项目骨架

TCP 框架

  • zinx - TCP并发服务器框架

中间件

  • Negroni - Web 中间件
  • csrf - CSRF 中间件
  • handlers - A collection of useful handlers for Go’s net/http package

并发

命令行

  • urfave/cli - 命令行程序构建工具
  • Cobra - 命令行构建包
  • GoTTY - 基于Web的命令行实时共享
  • progressbar - 在终端上输出进度条
  • cheggaaa/pb - 终端进度条
  • Color - 命令行文字颜色
  • termui - 终端仪表盘
  • gosu - 以指定的用户权限来运行脚本
  • tui - 终端 UI
  • gotop - 类 top 系统监控显示
  • go-colorable - Colorable writer for Windows
  • go-isatty - TTY 环境判断
  • fzf - 命令行下的文件 Finder
  • flaggy - 命令参数解析
  • go-daemon - daemon 进程包
  • pflag - 命令行参数处理
  • PIXterm - 在命令行终端中绘图
  • WTF - 一个命令行的信息仪表盘,可以定制显示内容
  • go-prompt - 命令行交互式输入
  • peco - 交互式过滤工具
  • termenv - 终端应用程序的高级 ANSI 样式和颜色支持
  • asciigraph - 在终端中绘制 ASCII 字符的图表
  • spinner - 涵盖70多种符号或进度条的控制器
  • tablewriter - 终端中输出表格内容
  • clop - 命令行解析包
  • go-flags - 命令行参数解析
  • termdash - 基于 Go Terminal 的仪表板系统

路由

网络

  • DNS - DNS 库
  • CoreDNS - DNS 服务器
  • Caddy - Web 服务器
  • RoadRunner - PHP 应用服务器、进程管理器、负载均衡,用于替代 Nginx + FPM
  • Traefik - 反向代理&负载均衡
  • GoReplay - 流量收集&回放
  • Sharingan - 滴滴开源的流量录制回放工具
  • p2pspider - 种子嗅探器
  • Proxy - golang 实现的高性能代理服务器
  • ProxyPool - 采集免费的代理资源为爬虫提供有效的IP代理
  • frp - 可用于内网穿透的高性能的反向代理应用
  • nps - 一款轻量级、高性能、功能强大的内网穿透代理服务器
  • torrent - BitTorrent 相关工具库
  • rain - BitTorrent 客户端和库
  • httpteleport - Teleports 10Gbps http traffic over 1Gbps networks
  • FIND3 - WiFi 设备发现
  • SubFinder - 子域名发现工具
  • ggz - 短网址服务
  • httpstat
  • grab - 文件下载
  • go-netty - 网络框架
  • httplab - The interactive web server
  • yamux - Multiplexer
  • sftp - SFTP support for the go.crypto/ssh package
  • evio - 事件驱动网络框架(reactor 模式)
  • gaio - 事件驱动网络框架(proactor 模式)
  • httpretty - 在终端上漂亮地打印出 HTTP 请求
  • blocky - 作为局域网 DNS 代理拦截广告

HTTP压测

HTTP

WebSocket

IM/实时通信

  • Centrifugo - 实时消息服务器,可以与任何语言编写的应用程序后端结合使用
  • goim - 支持集群的 im 及实时推送服务
  • Tinode - 即时消息服务器,通过 websocket/JSON 或 gRPC/TCP 等协议传输

网关

序列化/解压缩

RPC

  • gRPC-Go - gRPC 官方包
  • gorpc
  • gorilla/rpc - 构建基于 HTTP 的 RPC 服务,比如 JSON-RPC
  • Lile - gRPC 服务构建包
  • rpcx
  • Twirp - 基于 Protobuf 的 RPC 框架,与 gRPC 类似
  • lile - gRPC 服务生成工具

邮件

消息

  • NSQ - 实时分布式消息平台
  • NATS - 云原生消息中间件

文件

模板引擎

代码生成

文本处理

Markdown

其他

  • gpy - Go 语言汉字转拼音工具
  • html2text - HTML 转 text
  • go-hashids - hashids 的 Go 版本
  • go-pinyin - 汉语拼音转换工具 Go 版
  • mahonia - 字符集编码转换
  • pangu.go - Go 版本的 pangu,给中英文之间加空格
  • goorgeous - A Go ORG syntax parser to HTML
  • go-diff - Go 版本的 diff 工具包
  • Chroma - 代码语法高亮
  • kyokomi/emoji
  • enescakir/emoji
  • golang/freetype - Freetype font rasterizer
  • prose - natural language processing library
  • minify - Web 静态资源压缩(HTML/JS/CSS/JSON)
  • Inflection - Pluralizes and singularizes English nouns
  • autocorrect - 自动给中英文之间加入合理的空格并纠正专用名词大小写
  • bleve - modern text indexing
  • etree - XML 解析&生成
  • feeds - RSS 内容生成
  • gofeed - RSS & Atom feeds 内容解析
  • gogrep - 通过语法树搜索 Go 源码
  • PipeIt - 文本转换,清理和提取工具
  • regexp2 - 全功能正则表达式引擎。如果标准库的 regexp 满足不了你,可以尝试使用 regexp2
  • html2article - 基于文本密度的 html2article 实现
  • hostctl - hosts 命令行管理工具

文档

数学计算

  • decimal - 解决浮点数计算精度问题
  • fixed
  • apd - decimal 包
  • mathfmt - 将 LaTeX 语法的注释转换为数学公式格式

日期时间

  • now
  • when - 自然日期时间解析
  • Carbon - Carbon 时间处理库的 Go 语言实现

配置

爬虫

  • Crawlab - 基于Golang的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP等多种编程语言以及多种爬虫框架
  • Colly - 网络爬虫框架
  • Pholcus - 支持分布式的高并发、重量级爬虫软件
  • go_spider
  • goquery
  • Muffet - 网站链接检查器
  • Creeper

数据库

数据库相关

  • usql - 几乎支持全部 SQL 与 NoSQL 数据库的命令行工具
  • GORM
    • gorm2sql - 根据 Model Struct 生成建表语句
  • Xorm - 支持 MySQL、PostgreSQL、SQLite3 以及 MsSQL
  • GoRose
  • sqlx - database/sql 扩展包
  • dbq - 数据库操作
  • gendry - 滴滴开源的SQL Builder
  • Squirrel - SQL Builder
  • qb - the database toolkit for go
  • redigo - Redis 客户端
  • go-redis
  • mgo
  • amqp - Go client for AMQP 0.9.1
  • kingshard - MySQL Proxy
  • SOAR - 对SQL进行优化和改写的自动化工具
  • gh-ost - GitHub 开源的在线更改 MySQL 表结构的工具
  • SQLer - write APIs using direct SQL queries with no hassle, let’s rethink about SQL
  • gocraft/dbr
  • Gaea - 小米开源的基于 MySQL 协议的数据库中间件
  • OctoSQL - 支持多数据库的 SQL 查询工具
  • goose - 数据库迁移工具
  • migrate - 数据库迁移工具
  • ent - An Entity Framework For Go
  • xsqlparser - SQL 解析
  • godb - a Go query builder and struct mapper
  • go-nulltype
  • go-mysql - MySQL 工具集

数据库驱动

数据库引擎

  • etcd - KV 分布式存储
  • InfluxDB - 时间序列数据库
  • Prometheus - 服务监控系统 & 时间序列数据库
  • CockroachDB - SQL database
  • Cayley - 图数据库
  • RadonDB - 基于 MySQL 研发的新一代分布式关系型数据库
  • TiDB - 分布式关系型数据库,兼容 MySQL 协议
  • AresDB - Uber 开源的 GPU 驱动的实时分析存储&查询引擎
  • leveldb - LevelDB 的 Go 实现
  • Dgraph - 分布式图数据库
  • rqlite - 基于 SQLite 的轻量级分布式关系数据库
  • gaeadb
  • BadgerDB - KV 数据库
  • LBADD - 用 Go 实现的分布式 SQL 数据库
  • go-memdb - 建立在不可变 Radix 树上的内存数据库
  • VectorSQL - 应用于 IoT 和大数据的 DBMS 数据库,类似于 ClickHouse
  • BuntDB - 基于内存的KV数据库,支持磁盘持久化、ACID事务
  • TinySQL - 迷你分布式关系型数据库
  • groupcache - 分布式缓存
  • Tile38 - GEO 数据库
  • Redcon - 兼容 Redis 协议的自定义 Redis 服务,采用 BuntDB 和 Tile38 实现存储

搜索

表单

  • validator
  • go-tagexpr - 字节跳动开源的结构体标签表达式解释器
  • schema - converts structs to and from form values

Auth

  • Casbin - 权限控制管理
  • pam-ussh - Uber’s SSH certificate pam module
  • jwt-go - JWT for Go
  • sessions - 后端 SESSION 服务
  • securecookie - cookie 加密/解密
  • Goth - Multi-Provider Authentication for Go
  • branca - 号称比 JWT 更安全的 token 解决方案

缓存

视频

  • goav - FFmpeg 视频处理
  • lal - 直播流媒体网络传输服务器
  • bililive-go - 直播录制工具

图形处理

  • barcode - 条形码/二维码生成器
  • picfit - 图片操作、裁剪、管理服务器
  • gmfs - 图片操作、裁剪、管理服务器
  • besticon - favicon 服务
  • Caire - 图片操作库
  • Imaging - 图片操作库
  • gocaptcha - 验证码生成
  • go-is-svg - 校验是否为 SVG 图片
  • identicon - 根据用户的 IP 、邮箱名等任意数据为用户产生漂亮的随机头像
  • prominentcolor - 识别图片的主要颜色
  • dchest/captcha - 生成和验证图片或音频验证码
  • bimg - 图片处理
  • imaginary - 图片处理服务
  • primitive - 用原始几何图形绘制图形

图表

构建编译

  • Mage - a Make/rake-like build tool using Go
  • GoReleaser - Go 多平台二进制文件打包、并支持发布到 Homebrew 的工具
  • goxc - 跨平台编译工具(因 1.5 版本开始已自带交叉编译,故已不再维护)
  • Task - 类似于 Make 的构建工具
  • codegangsta/gin - 热编译工具
  • Air - 热编译工具
  • dh-make-golang - 自动构建 Debian 包
  • pkger - 将静态文件打包成 Go 二进制文件
  • mewn - 静态文件嵌入打包到二进制文件
  • gobinaries - 不用安装Go就能编译安装Go编写的程序

优雅升级

代码分析

调试

  • go-spew - 变量打印工具
  • Delve - Debug 工具
  • gdlv - Delve 界面版本
  • repr - 变量打印工具
  • pp - 彩色变量打印工具
  • gops - 谷歌官方出品的 Go 程序监控调试工具
  • pprof
  • go-callvis - 可视化Go程序的调用图
  • q - 自动打印变量类型并且格式化输出
  • Litter
  • RDebug - 滴滴开源的一款用于 RD 研发、自测、调试的实用工具
  • debugcharts - Go 内存占用可视化调试工具
  • gcvis - 实时可视化 gctrace
  • pkg/profile

测试

错误处理

  • errors
  • errorx
  • errwrap - Go tool to wrap and fix errors with the new %w verb directive
  • erris - Linter for errors.Is and errors.As
  • eris - 旨在通过错误包装,堆栈跟踪和输出格式为你提供对错误处理的更多控制
  • errlog - 使用静态和堆栈跟踪分析来快速确定哪个函数调用导致的错误
  • juju/errors
  • go-fault - GitHub 官方出品,基于标准库 http 中间件的故障注入库

安全

系统信息

UUID

日志&收集

监控

  • OpenFalcon - 小米开源的监控系统
  • Prometheus - 服务监控系统 & 时间序列数据库
  • Grafana - 分析监视平台, 支持 Graphite, Elasticsearch, OpenTSDB, Prometheus, InfluxDB 等数据源
    • grabana - 用 Go 代码快速创建 grafana dashboards
  • TeaWeb - 一款集静态资源、缓存、代理、统计、监控于一体的可视化智能WebServer
  • Jaeger - 分布式追踪系统
  • go-osstat - 系统指标统计
  • grafterm - Metrics dashboards on terminal
  • mymon - MySQL 运行监控

统计分析

  • Fathom - Web 站点统计
  • Signal - Web 站点统计
  • Veneur - 分布式实时数据处理管道
  • gonum - 科学计算相关

容器技术

集群管理

机器学习

  • goml - 机器学习库
  • GoLearn - 一个 “开箱即用” 的机器学习库
  • glow - 易用的分布式计算系统
  • Gobot - 机器人和物理计算语言库
  • Olivia - 神经网络
  • Pico - 基于像素强度比较的物体检测纸张的纯 Go 脸部检测库

算法

数据结构

依赖注入

JSON

  • GJSON - JSON 解释器
  • SJSON - JSON 修改工具
  • fastjson - fast JSON parser and validator for Go
  • jsonparser
  • ffjson
  • json-iterator - 滴滴开源的 JSON 解析器
  • gojsonq - JSON/YAML/XML/CSV 等数据查询
  • easyjson
  • go-jsonc - 将带注释的 JSON 转为无注释的
  • jin - JSON 操作工具包,同时具有标准库和类似 tidwall/gjsontidwall/sjson 的功能
  • hujson - 支持注释的 JSON 解码

依赖管理

  • goproxy.io - GOPROXY 代理服务
  • goproxy.cn - 更适合国内用户的代理服务
  • Gopm - Go 包管理工具
  • govendor - Vendor 包管理工具
  • gom - 包版本管理工具
  • goup - 检查包版本是否有更新

微服务

Serverless

  • OpenFaaS - Serverless Functions Made Simple(功能服务化的 FaaS 框架)
  • fn - 事件驱动的 FaaS
  • riff - 基于 Kubernetes 的 FaaS
  • Nuclio - 实时事件与数据的 Serverless 框架
  • Flogo - 事件驱动的 Serverless 框架
  • Dapr
  • kubeless
  • Fission - 基于 Kubernetes 的 Serverless
  • pulumi
  • Knative
  • fx

持续集成/部署

  • CDS - 持续集成服务
  • gopub
  • CodePub
  • syncd - 代码部署工具
  • Drone - 基于 Docker 的持续发布平台
  • Cyclone - 持续集成&发布平台
  • tbls - 用于记录数据库文档的 CI 友好工具

Git

  • gogs - 类似于 GitLab 的 Git 服务器
  • Gitea - 由 gogs 分叉出的 Git 服务器
  • go-git - Go 实现的 Git 操作
  • gitin - commit/branch/status explorer for git
  • hub - GitHub 命令行工具
  • git-o-matic - 一个监控 Git 仓库变化和自动 pull/push 的工具
  • gitbase - SQL 的方式查询 Git 日志
  • git-chglog - CHANGELOG 命令行工具
  • lazyhub - GitHub 的终端 UI 客户端
  • goaction - 在 Go 中编写 GitHub Action

限流器

编译器

  • TinyGo - 一个适用于微控制器、WebAssembly 和命令行工具的 Go 编译器
  • llir/llvm - LLVM 编译器

解释器

  • participle - 通用的自定义语法解析包
  • GopherLua - VM and compiler for Lua in Go
  • go-lua - A Lua VM in pure Go
  • otto - JavaScript 解释器
  • goja - ECMAScript 5.1(+) implementation in Go
  • gpython - Python Interpreter on Go
  • Grumpy - 转换 Python 为 Go 代码,谷歌开源
  • starlark-go - Starlark in Go
  • avo - Generate x86 Assembly with Go
  • wagon - WebAssembly 解释器
  • GopherJS - 把 Go 代码编译成 JavaScript 代码
  • Yaegi - Go 语言解释器
  • properties - Java properties scanner for Go
  • gobasic - A BASIC interpreter written in golang
  • golisp - Lisp 解释器

PHP

  • php-parser - PHP AST 语法解析
  • deuill/go-php - PHP bindings for Go
  • goridge - High-performance PHP-to-Golang IPC bridge
  • RoadRunner - 高性能PHP应用服务器,支持负载均衡及进程管理

自定义解释器

编辑器

  • micro - 基于终端的编辑器

运行器

  • gore - 在线运行 Go 代码
  • nodebook - 在线运行多种语言

查询语言

  • graphql - Go 实现的 GraphQL
  • graphql-go
  • GQLEngine - 基于 graphql-go 实现
  • RQL - REST 资源查询语言
  • Thunder - GraphQL 服务构建框架
  • gqlgen - 构建 GraphQL 服务器的包
  • super-graph - 无需编写代码即可在 Go 项目中构建复杂的 GraphQL API

游戏相关

桌面开发

  • Lorca - 用 Go 编写 HTML5 桌面程序,依赖 Chrome 进行 UI 渲染,但却不把 Chrome 打包到应用中
  • webview - 用 Go 构建跨平台的桌面软件
  • walk - Windows GUI toolkit
  • go-gtk - Go bindings for GTK
  • andlabs/ui - Platform-native GUI library for Go
  • fyne - Material Design 风格的 GUI
  • go-gl - Go bindings for OpenGL (generated via glow)
  • therecipe/qt - 基于 Qt 的跨全平台 UI 包
  • giu - 基于 Dear ImGui 的跨平台 GUI 框架
  • go-app - 一个 WebAssembly 框架,用于使用 Go,HTML 和 CSS 构建 GUI 应用
  • wails - 使用 Go 和 Web 技术创建桌面应用程序
  • chromedp - 纯 Go 语言实现的驱动浏览器的 Chrome DevTools Protocol,可用于爬虫、反爬虫、测试等场景
  • go-astilectron - 基于 Electron 的跨平台开发
  • Gio - 跨平台 UI 框架,支持移动应用
  • nucular - 基于 Gio 的实现
  • GoVCL - 跨平台的 GUI 包

移动端

任务/定时器

微信

  • weapp - 微信小程序 SDK

区块链

协程池

开发辅助包

代码生成

  • ChimeraCoder/gojson - 根据 JSON 生成结构体
  • db2struct - 根据表结构生成结构体
  • smallnest/gen - 根据表结构生成结构体
  • sqlc - 根据 SQL 语句生成 Go 代码
  • xo - 根据表结构或查询语句自动生成 Go 代码

未归类

  • Robotgo - Golang 跨平台自动化系统,控制键盘鼠标位图和读取屏幕,窗口句柄以及全局事件监听
  • go-homedir
  • i18n - i18n 多语言工具包
  • Paginater - 分页工具
  • gls - Goroutine local storage
  • go-version - 版本号比较
  • go-semver - 语义版本
  • Metabolize - Decodes HTML meta tags into a Golang struct
  • otp - 一次性密码工具包(One Time Password utilities)
  • wechat-go - 微信 Web 版 API 的 Go 实现
  • misspell - 常拼写错误的英语单词
  • CRDT - CRDT(Convergent and Commutative Replicated Data Types)最终一致性算法的实现
  • script - Making it easy to write shell-like scripts in Go
  • sysadmin-utils
  • ants - goroutine 池
  • licenseclassifier - 识别文件中的 license 类型
  • rose - 在 HTML 中嵌入和运行 Go 代码
  • esbuild - JavaScript 构建打包工具
  • clipboard - 跨平台的粘贴板实现

工具

资源站点