Go 资源整理,这里有你想要的?
2012 年 12 月 28 日
嗯~世界上第二好的语言,这里有你可能想要的:pill:
在 GitHub
上稳定更新,觉得不错请点个 Star :heart:
如转载分享,请保留出处,谢谢 :laughing:
原文地址: https://shockerli.net/post/go-awesome
GitHub: https://github.com/shockerli/go-awesome
国内官网镜像(访问快~): https://golang.google.cn
GitHub: https://github.com/golang/go
Wiki: https://github.com/golang/go/wiki
指导原则
-
简单性
> 复杂性把可读的程序变得不可读,复杂性终结了很多软件项目。 -
可读性
> 代码是给人看的,代码阅读时长远超编写。程序必须可维护,那可读是第一步。 -
生产率
> 拥有众多的工具集和基础库,可以很简单方便的完成绝大多数工作。
> 编译速度足够快,拥有动态语言的高效,但却不会面临动态语言不可靠的问题。
> 自带编程规范,使得团队代码一致,也帮助开发者发现和避免潜在的错误。
Awesome
-
GitHub Topic for Go
-
Awesome Go
-
golang-open-source-projects
– 含描述的中文版 Awesome Go -
Awesome Go Storage
– Go 存储相关开源项目 -
awesome-go-China
– 专门收集华人写的开源项目 -
Go Patterns
– Go 版本的设计模式 -
go-algorithms
– Go 版本的数据结构和算法 -
Go 学习之路
– Go 学习资料汇集 - Go 开发者路线图
大牛
Go 语言方面的大牛,或者优秀 Go 项目的组织
-
mattn
– 写了数百个 Go 项目,盛产优质项目 -
Unknwon
– gogs/macaron 等项目作者,《The Way to Go》译者 -
Jinzhu
– gorm/QOR 等作者 -
valyala
– fasthttp/fastjson 等作者 -
vmihailenco
– go-redis/go-pg 等作者 -
kataras
– iris 作者 - bep
- spf13
-
Uber
– Open Source Software at Uber - Gorilla web toolkit
-
Stretchr
– Tame your unstructured data - Containous
文档
- Go 官方入门指南
- Go 语言高级编程
- Go 专家编程
- Go 编程语言
- Golang 标准库文档(官方/中文)
-
Go 语言标准库
在线阅读
- 《The Way to Go》中文版
- Go 语言圣经(中文版)
- Go语言入门教程
- Go 实战开发
- Go Web 应用开发
- Go 学习技能树
- 实效 Go 编程
- Go 语言语法详解笔记
- Go 语言学习资料与社区索引
- Go database/sql tutorial
- GO 命令教程
- 深入解析 Go
- Go 语言博客实践
- 学习 Go 语言
-
Go 夜读
– Go 标准包、开源项目源代码阅读讲解 - Go2编程指南
-
Go database/sql tutorial
– Go 数据库(database/sql)开发使用教程 -
Go Web Examples
– Go Web 开发示例 -
Go Assembly
– 通过示例介绍 Go 汇编功能 -
Ultimate Go
– 终极 Go 学习指南,包含大量文档化的代码和程序分析
指南
文章
-
Go语言爱好者周刊
- Go的50度灰:Golang新开发者要注意的陷阱和常见错误
- Go 程序的性能优化及 pprof 的使用
- gops – Go语言程序查看和诊断工具
- Go源码分析——http.ListenAndServe()是如何工作的
- GoConvey 框架使用指南
- GoStub 框架使用指南
- GoMock 框架使用指南
- Monkey 框架使用指南
付费教程
-
基于 Go 语言构建企业级的 RESTful API 服务
– 掘金小册 -
Go语言核心36讲
– 极客时间
成品项目
-
studygolang
– Go 语言中文网 -
Hugo
– 静态网站生成器 -
喧喧
– 由然之协同
提供的面向企业即时通信解决方案 -
mkcert
– 生成本地 HTTPS 加密证书的工具 -
Rainbond
– 基于Docker、Kubernetes等容器技术的开源PaaS -
NYADB2
– Go 实现的关系型数据库, 值得用于学习 -
EiBlog
–国产
博客 -
pan-light
– 不限速的百度网盘客户端, 基于 Go + Qt5 开发
学习项目
-
1m-go-websockets
– 该项目演示了如何用 Go 编写一个可以提供超过一百万个websockets
连接、运行内存小于 1GB 的服务器 -
Go by Example
– 通过实例学习 Go
开源类库
框架
-
Macaron
– 一款具有高生产力和模块化设计的 Go Web 框架国产
-
Beego
– 一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架国产
-
Gin
– 轻量 Web 框架 -
Iris
– Web 开发框架 - Revel
- echo
- chi
-
Faygo
–国产
-
Teleport
– Socket 框架 -
GoFrame
–国产
-
QOR
– 系列应用开发组件包 - Buffalo
-
DotWeb
–国产
-
REST Layer
– REST API framework - Honeytrap
- Ponzu
- utron
- muxie
-
go-admin
– 与 laravel-admin
类似的后台管理快速开发框架
中间件
-
Negroni
– Web 中间件 -
csrf
– CSRF 中间件 -
handlers
– A collection of useful handlers for Go’snet/http
package
并发
-
SizedWaitGroup
– 并发控制 -
concurrent
– concurrency utilities
命令行
-
urfave/cli
– 命令行程序构建工具 -
Cobra
– 命令行构建包 -
GoTTY
– 基于Web的命令行实时共享 -
progressbar
– 在终端上输出进度条 -
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
– 一个命令行的信息仪表盘,可以定制显示内容
路由
- HttpRouter
-
mux
– URL 路由和调度器 - gocraft/web
网络
-
fasthttp
– 比net/http
快 10 倍的 HTTP 工具包 -
Resty
– HTTP & REST 客户端包 -
DNS
– DNS 库 -
CoreDNS
– DNS 服务器 -
Caddy
– Web 服务器 -
RoadRunner
– PHP 应用服务器、进程管理器、负载均衡,用于替代Nginx + FPM
-
Træfik
– 反向代理&负载均衡 -
GoReplay
– 流量收集&回放 -
Vegeta
– HTTP 负载压测工具 -
hey
– Web 压测工具 -
bombardier
– Web 压测工具 -
p2pspider
– 种子嗅探器 -
goim
– 支持集群的 im 及实时推送服务 -
Proxy
– golang 实现的高性能代理服务器 -
ProxyPool
– 采集免费的代理资源为爬虫提供有效的IP代理 -
frp
– 可用于内网穿透的高性能的反向代理应用 -
torrent
– BitTorrent 相关工具库 -
httpteleport
– Teleports 10Gbps http traffic over 1Gbps networks -
FIND3
– WiFi 设备发现 -
SubFinder
– 子域名发现工具 -
ggz
– 短网址服务 - httpstat
WebSocket
- Gorilla WebSocket
-
websocketd
– Go 开发的一键搭建 WebSocket 服务器命令行工具 -
ws
– WebSocket 开发包 -
melody
– WebSocket 服务框架
网关
-
GoKu API Gateway CE
– eoLinker 开源的 API 网关
序列化
-
vmihailenco/msgpack
– 支持 msgpack -
go/codec
– 支持 msgpack/binc/cbor/json -
protobuf
– Go 版本的 Protocol Buffers -
Objx
– 操作 map, slice, JSON 等数据的包
RPC
邮件
-
Gomail
– 邮件发送包 - scorredoira/email
消息
文件
-
Syncthing
– 文件同步 -
fsnotify
– 文件系统监控工具 -
gohttpserver
– HTTP 静态文件服务器 -
XLSX
– Excel 读写包 -
Excelize
– 360 开源的 Excel 工具包 -
SeaweedFS
– 分布式文件系统 -
go-fastdfs
– 分布式文件存储服务 -
Dragonfly
– 基于 P2P 的分布式文件系统 -
filetype
– 检测文件类型 -
cae
– 实现 ZIP/TAR.GZ 解压缩 -
compress
– Optimized compression packages -
Afero
– 文件操作包 -
fsync
– 文件/目录同步 -
filebrowser
– Web File Browser
模板引擎
-
goTemplateBenchmark
– 给各 Go 模板引擎做性能测试,当然也就包含了最全的模板引擎包 -
Jet
– 速度很快 -
amber
– HTML 模板引擎 -
fasttemplate
– Simple and fast template engine for Go - quicktemplate
- mustache
- Ace
文本
-
Blackfriday
– 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
– 代码语法高亮 - Emoji
-
prose
– natural language processing library -
minify
– Web 静态资源压缩(HTML/JS/CSS/JSON) -
Lute
– 结构化的 Markdown 引擎 -
docx2md
转换 Word 为 Markdown
文档
-
swag
– Swagger for Go -
gin-swagger
– Swagger for Gin -
go-swagger
– Swagger 2.0 implementation for go
数学计算
日期时间
配置
-
GoDotEnv
–.env
配置文件解析 - yaml
-
toml
–TOML
解析&编码包 -
INI
–INI
配置文件解析 -
Viper
– 支持JSON
,TOML
,YAML
,HCL
,Java
等配置文件 - Multiconfig
- configor
- envconfig
-
confd
– 配置管理工具
爬虫
-
Crawlab
– 基于Golang的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP等多种编程语言以及多种爬虫框架 -
Colly
– 网络爬虫框架 -
Pholcus
– 支持分布式的高并发、重量级爬虫软件 - go_spider
- goquery
-
Muffet
– 网站链接检查器 - Creeper
数据库相关
-
GORM
-
gorm2sql
– 根据 Model Struct 生成建表语句
-
gorm2sql
-
Xorm
– 支持 MySQL、PostgreSQL、SQLite3 以及 MsSQL - GoRose
- Go-MySQL-Driver
-
sqlx
–database/sql
扩展包 -
qb
– the database toolkit for go -
Redigo
– Redis 客户端 - go-redis
-
mongo-go-driver
– MongoDB 官方出品的 Go 语言驱动 -
mgo
-
globalsign/mgo
– The MongoDB driver for Go - mgo使用指南
-
globalsign/mgo
-
amqp
– Go client for AMQP 0.9.1 -
xo
– a command-line tool to generate Go code based on a database schema or a custom query -
kingshard
– MySQL Proxy -
SOAR
– 对SQL进行优化和改写的自动化工具 -
gh-ost
– GitHub 开源的在线更改 MySQL 表结构的工具 -
go-mssqldb
– MSSQL 驱动 -
pq
– PostgreSQL 驱动 -
SQLer
– write APIs using direct SQL queries with no hassle, let’s rethink about SQL - gocraft/dbr
-
Gaea
– 小米开源的基于 MySQL 协议的数据库中间件 -
OctoSQL
– 支持多数据库的 SQL 查询工具 -
goose
– 数据库迁移工具 -
ent
– An Entity Framework For Go
数据库引擎
-
etcd
– KV 分布式存储 - InfluxDB
-
CockroachDB
– SQL database -
Cayley
– 图数据库 -
RadonDB
– 基于 MySQL 研发的新一代分布式关系型数据库 -
AresDB
– Uber 开源的 GPU 驱动的实时分析存储&查询引擎 -
leveldb
– LevelDB 的 Go 实现 -
Dgraph
– 分布式图数据库
搜索
-
wukong
– 全文搜索引擎 -
go-elasticsearch
– 官方 ES 客户端 -
elastic
– Elasticsearch 客户端 -
go-mysql-elasticsearch
– Sync MySQL data into elasticsearch -
gse
– Go 语言分词 -
sego
– Go 中文分词 -
Riot
– 全文搜索引擎
表单
- 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
缓存
- GCache
-
bbolt
– key/value store -
go-cache
– KV 内存缓存 -
gomemcache
– Memcache 客户端 - cache2go
图片
-
barcode
– 条形码/二维码生成器 -
picfit
– 图片操作、裁剪、管理服务器 -
gmfs
– 图片操作、裁剪、管理服务器 -
besticon
– favicon 服务 -
Caire
– 图片操作库 -
Imaging
– 图片操作库 -
gocaptcha
– 验证码生成 -
go-is-svg
– 校验是否为 SVG 图片 -
identicon
– 根据用户的 IP 、邮箱名等任意数据为用户产生漂亮的随机头像
图表
-
go-echarts
– Echarts 图表库
构建编译
-
Mage
– a Make/rake-like build tool using Go -
GoReleaser
– Go 多平台二进制文件打包、并支持发布到 Homebrew 的工具 - goxc
-
gometalinter
– 代码质量检查分析工具 -
Task
– 类似于Make
的构建工具 -
gin
– 热编译工具,自动监测文件变化而重新编译并重启,方便开发调试 Web 应用
调试
-
go-spew
– 变量打印工具 -
Delve
– Debug 工具 -
repr
– 变量打印工具 -
pp
– 彩色变量打印工具 -
gops
– 谷歌官方出品的 Go 程序监控调试工具 - pprof
-
go-callvis
– 可视化Go程序的调用图 -
q
– 自动打印变量类型并且格式化输出 - Litter
-
errcheck
– 检测未处理的错误(errors) -
Staticcheck
– 一系列的 Go 代码静态分析工具
测试
-
GoConvey
– 含Web界面的单元测试框架 -
GoMock
– 谷歌出品的Mock测试框架 - GoStub
- Monkey
-
Ginkgo
– BBD 测试框架 -
fperf
– 压测工具 - gocheck
- Testify
-
gotests
– Generate Go tests from your source code -
TestSQL
– 根据 SQL 创建语句生成测试数据 -
httpmock
– HTTP Mock -
Goblin
BDD 测试框架 -
Faker
– Struct Data Fake Generator -
go-tprof
– 包测试报告生成工具
错误处理
安全
-
Kunpeng
– 开源POC检测框架
UUID
-
go.uuid
– UUID 库 -
SEQSVR
– Go + MySQL 实现的分布式 ID 生成服务 -
cpuid
– CPU feature identification for Go -
google/uuid
– Google 开源的 uuid 包 - gofrs/uuid
-
snowflake
– Twitter snowflake IDs
日志&收集
-
Logrus
– 日志记录包 - zerolog
-
zap
– Uber 开发的日志记录包 - Seelog
-
logkit
– 七牛开源的日志收集工具 -
gogstash
– 类似于 Logstash 的日志收集器 - lumberjack
监控
-
OpenFalcon
– 小米开源的监控系统 -
Prometheus
– 监控系统 -
Grafana
– 分析监视平台, 支持 Graphite, Elasticsearch, OpenTSDB, Prometheus, InfluxDB 等数据源 -
TeaWeb
– 一款集静态资源、缓存、代理、统计、监控于一体的可视化智能WebServer -
Jaeger
– 分布式追踪系统
统计分析
容器技术
机器学习
-
goml
– 机器学习库 -
GoLearn
– 一个 “开箱即用” 的机器学习库 -
glow
– 易用的分布式计算系统 -
Gobot
– 机器人和物理计算语言库 -
Olivia
– 神经网络 -
Pico
– 基于像素强度比较的物体检测纸张的纯 Go 脸部检测库
算法
- GoDS
-
Dragonboat
– 多组 Raft 共识算法库 -
golang-lru
– LRU 算法实现
数据结构
- go-datastructures
-
Play-with-Data-Structures
– 「玩转数据结构」课程的 Go 语言实现版本 - HashMap
-
SipHash
– SipHash-2-4
依赖注入
JSON
-
GJSON
– JSON 解释器 -
SJSON
– JSON 修改工具 -
fastjson
– fast JSON parser and validator for Go - jsonparser
- ffjson
-
json-iterator
– 滴滴开源的 JSON 解析器
依赖管理
-
goproxy.io
–GOPROXY
代理服务 -
goproxy.cn
– 更适合国内用户的代理服务 -
Gopm
– Go 包管理工具 -
govendor
– Vendor 包管理工具 -
gom
– 包版本管理工具
微服务
-
Istio
[ 中文文档
] – 跨语言微服务框架 - goa
-
Micro
– 微服务工具 -
Go kit
– Go 微服务工具集 -
GoKit CLI
– Go kit 脚手架 - gogo
- Go-Chassis
-
Go Micro
– 微服务框架 - Kite
持续集成/部署
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 的工具
限流器
解释器
-
participle
– 通用的自定义语法解析包 -
GopherLua
– VM and compiler for Lua in Go -
go-lua
– A Lua VM in pure Go -
php-parser
– PHP AST 语法解析 -
otto
– JavaScript 解释器 -
goja
– ECMAScript 5.1(+) implementation in Go -
gpython
– Python Interpreter on Go -
starlark-go
– Starlark in Go -
avo
– Generate x86 Assembly with Go -
wagon
– WebAssembly 解释器 -
GopherJS
– 把 Go 代码编译成 JavaScript 代码 -
Yaegi
– Go 语言解释器
自定义解释器
-
Math-Engine
– 使用 Go 实现的数学表达式解析计算引擎库,学习语法解析很适用 -
Gval
– 表达式计算 - expression-parsing
-
goexp
– Recursive descent expression parser in Go -
goastch
– Go AST 语法解析 - tdop
- swallow
- Anko
-
Expr
– 编译&执行字符串中的表达式 -
Tengo
– 用 Go 编写的脚本语言 -
V
– Go 编写的语言 - kumarUjjawal/bison
查询语言
游戏相关
桌面开发
-
Lorca
– 用 Go 编写 HTML5 桌面程序,依赖 Chrome 进行 UI 渲染,但却不把 Chrome 打包到应用中 -
webview
– 用 Go 构建跨平台的桌面软件 -
walk
– Windows GUI toolkit -
go-gtk
– Go bindings for GTK -
ui
– Platform-native GUI library for Go -
fyne
– Cross platform GUI in Go based on Material Design -
go-gl
– Go bindings for OpenGL (generated via glow) -
therecipe/qt
– 基于 Qt 的跨全平台 UI 包
任务/定时器
-
Grift
– Go based task runner
微信
-
weapp
– 微信小程序 SDK
未归类
-
Robotgo
– Golang 跨平台自动化系统,控制键盘鼠标位图和读取屏幕,窗口句柄以及全局事件监听 -
cron
– a cron library for go -
goCron
– A Golang Job Scheduling Package -
com
– 工具包 -
php2go
– Go 实现的 140+ 个 PHP 函数功能包 -
gommon
– Common packages for Go -
Go Report Card
– Go 项目质量分析报告工具 -
i18n
–i18n
多语言工具包 -
Paginater
– 分页工具 -
gls
– Goroutine local storage -
go-version
– 版本号比较 -
reflect2
– reflect api without runtime reflect.Value cost -
mapstructure
– Go library for decoding generic map values into native Go structures -
copier
– struct 之间拷贝值 -
Cast
– 数据类型转换 -
Metabolize
– Decodes HTML meta tags into a Golang struct -
otp
– 一次性密码工具包(One Time Password utilities) -
feeds
– RSS 内容生成 -
gofeed
– RSS & Atom feeds 内容解析 -
wechat-go
– 微信 Web 版 API 的 Go 实现 -
misspell
– 常拼写错误的英语单词 -
Standard Go Project Layout
– Go 项目目录结构示例 -
CRDT
– CRDT(Convergent and Commutative Replicated Data Types)最终一致性算法的实现 -
script
– Making it easy to write shell-like scripts in Go -
revive
– 代码检查分析
工具
-
goenv
– Go 版本管理 -
GoLand
– IDE 软件 -
IntelliJ系列软件Go语言插件