Go 资源列表
【导读】:awesome-go 就是 avelino 发起维护的 Go 资源列表,内容包括:音频和音乐库、命令行工具、服务端应用、流处理、持续集成、数据库、机器学习、NLP、物联网、中间件、文本处理、安全、机器人技术等。
音频和音乐库
- flac: 原生
Go语言编写的 FLAC 数据流编码与解码器。 - gaad: 原生
Go语言编写的 AAC 比特流解析器。 - go-sox:
libsox库的go语言封装 - GoAudio: 原生
Go语言编写的音频处理库。 - gosamplerate:
libsamplerate库的Go语言封装 - id3v2:
go语言开发的ID3编码和解码库,具有快速和稳定的特性。 - malgo:
go语言开发的迷你音频库。 - minimp3: 轻量级
MP3解码库。 - mix: 针对音乐类应用程序的基于序列的
Go原生音频混音器。 - mp3: 原生 Go 语言的 mp3 解码器.
- music-theory: 基于
go语言音乐理论模型。 - Oto: 可用于在多个平台上播放音频的底层库
- PortAudio: 音频
I/O库PortAudio的go语言封装 - portmidi: 音频
I/O库PortMidi的go语言封装 - vorbis:
Go语言版Vorbis解码器(使用到CGO,但并不依赖与 cgo) - waveform: 基于音频流来生成音频波形图的
go语言库
认证和 OAuth 授权
- authboss: 针对
web应用的模块化认证系统,尽量去除模版代码和硬编码来以灵活可配置的方式来嵌入到 web 应用程序中,从而避免重复编码和重复配置。 - branca:
Branca Tokens的Golang实现。 - casbin: 支持
ACL、RBAC、ABAC等访问控制模型的授权与认证库。 - cookiestxt: 支持
cookies.txt文件格式的解析器。 - go-email-normalizer: 用于支持电子邮件地址的规范表示的
Golang库,。 - go-guardian: Go-Guardian 支持以简洁又清晰的方式来进行
API认证和web认证,认证模型支持LDAP、Basic、Bearer token和基于证书的认证 - go-jose: 相当完整地实现了 JOSE 工作组的
JSON Web Token、JSON Web Signatures和JSON Web Encryption规范。 - go-oauth2-server: 不需要其他依赖的、符合规范的、用
Golang编写的OAuth2服务器。 - gologin: 适用于 OAuth1 和 OAuth2 多身份登录认证的实现方案
- gorbac: Golang 中一个轻量级的基于角色的访问控制
RBAC实现。 - goth: 以简单、干净、常用的方式来使用
OAuth和OAuth2。支持多种身份认证。 - httpauth:
HTTP认证中间件 - jeff: 简单、灵活、安全、习惯性的
Web会话管理,支持可插拔的后端。 - jwt: 干净且易于使用的 JSON 网络令牌
JWT的实现。 - jwt: 轻量级
JSON网络令牌(JWT)库。 - jwt: 针对 go 语言的 安全、简单、快速的 JSON Web Tokens 。
- jwt-auth: 用于
Golang http服务器的JWT中间件,有许多配置选项。 - jwt-go:
JSON Web Tokens(JWT)的 Golang 实现。 - loginsrv: JWT 登录微服务,具有可插拔的后端,如
OAuth2 (Github)、htpasswd、OSIAM。 - oauth2: 继承自
goauth2。实现了 JWT,Google APIs,GCE,GAE 的通用OAuth 2.0授权包。 - osin:
Go语言OAuth2服务器库 - otpgo: 基于时间的一次性密码
TOTP和基于HMAC的一次性密码HOTP库。 - paseto: 平台无关的安全令牌
PASETO的Golang实现。 - permissions2: 用于跟踪用户、登录状态和权限的库,依赖安全
cookies和bcrypt。 - rbac: 用于 Go 应用程序的极简
RBAC库。 - scope: 在
Go中轻松管理OAuth2作用域。 - scs:
HTTP服务器的会话管理器。 - securecookie: 高效的安全
cookie编码 / 解码库。 - session:
Go语言会话管理 (支持Google App Engine - GAE) - sessiongate-go: 使用
SessionGate Redis模块进行Go会话管理。 - sessions: 为
Go语言HTTP服务器开发的非常简单的、高性能的、高可定制的会话服务 - sessionup: 简单而有效的
HTTP会话管理和标识库。 - sjwt: - 简单的
jwt生成器和解析器。
机器人相关
构建和使用机器人的库
- ephemeral-roles: 根据语音频道成员是否出现来管理临时角色的机器人。
- go-chat-bot: 用
Go编写的IRC、Slack和Telegram机器人。 - go-joe: 受 Hubot 启发,用 Go 编写的通用型机器人库。
- go-sarah: 为聊天服务如
LINE、Slack、Gitter等构建机器人的框架。 - go-tgbot: 由 swagger 文件、基于会话的路由器和中间件生成的纯
Golang实现的Telegram机器人 API 封装。 - go-twitch-irc: 用于编写
twitch.tv聊天机器人的库。 - Golang CryptoTrading Bot:
golang实现的基于控制台的加密货币交易所交易机器人库 - govkbot: 简单的
Go VK机器人库。 - hanu: 用于编写
Slack机器人的框架。 - Kelp:
Stellar DEX的官方交易机器人。开箱即用,用 Golang 编写,兼容中心化交易所和自定义交易策略。 - margelet: 用于构建
Telegram机器人的框架。 - micha: 封装
Telegram机器人 api 的Go库。 - olivia: 一个用人工神经网络构建的聊天机器人。
- slacker: 用于创建
Slack机器人的简单易用框架。 - slackscot: 构建
Slack机器人的框架。 - tbot:
Telegram机器人服务器,其 API 类似于net/http。 - telebot: 用
Go编写的Telegram机器人框架。 - telegram-bot-api: 简单干净的
Telegram机器人客户端。 - Tenyks: 使用
Redis和JSON进行消息传递的面向服务的IRC机器人。
命令行工具
标准 CLI
用于创建一个标准命令行应用程序的库
- 1build: 管理项目专用命令的命令行工具。
- argparse: 受
Python的argparse模块启发的命令行参数解析器。 - argv: 用于分隔使用
bash的语法的命令行字符串并将其作为参数的Go语言库, - cli: 功能强大,使用简单的命令行软件库,基于
Golang结构体tag实现 - cli: 一个功能丰富、易于使用的命令行工具包
- climax: 可以显示 “人脸” 的命令替代库。
- clîr: 一个简单而清晰的
CLI库,不需要其他依赖。 - cmd: 扩展了标准
flag包,具有支持子命令的特性 - cmdr: 一个
POSIX/GNU风格,类似于getopt的命令行 UI 的 Go 库。 - cobra: 一个现代化的命令行。
- commandeer: 开发友好的
CLI应用程序:基于结构字段和标签设置标志参数、默认值和用法。 - complete: 使用
Go语言编写的bash命令补全工具以及Go命令补全工具 - Dnote: 支持多设备同步的命令行笔记工具。
- env: 基于
tag的结构体环境配置。 - flag: 简单而强大的
Go命令行选项解析库,支持子命令。 - flaggy: 功能强大的
flag包,具有出色的子命令支持。 - flagvar:
Go标准标志包的标志参数类型集合。 - go-arg:
Go中基于结构体的参数解析。 - go-commander: 用于简化
CLI工作流程的Go库。 - go-flags:
GO命令行选项解析器。 - go-getoptions:
Go选项解析器,灵感来自Perl中灵活性的GetOpt::Long。 - gocmd: 用于构建命令行应用程序的
Go库。 - hiboot cli: 具有自动配置和依赖注入功能的 cli 应用程序框架。
- job: 将你的短期命令转化为长期作业。
- kingpin: 支持子命令的命令行和标志位解析器。
- liner: 命令行文本解析器
- mitchellh/cli: 用于实现命令行交互的
Go语言库 - mow.cli: 用于构建命令行程序的工具库,支持更加精准的标记及选项解析和验证
- ops:
Unikernel编辑器和生成器 - pflag: Go flag 软件包的替代品,实现了
POSIX/GNU风格的flags. - sand: 用于创建解释器等工具的简单 API 库。
- sflags: 基于结构体的
flag生成器,支持flag, urfave/cli, pflag, cobra, kingpin等其他库 - strumt: 用于创建提示链的库。
- ts: 时间戳转换和比较工具。
- ukautz/clif: 一个小型命令行程序开发框架
- urfave/cli: 简单、快速、有趣的、用于构建 Go 语言命令行程序的软件包。
- wlog: 简单的日志接口,具有跨平台和并发支持等特性
- wmenu: 为命令行程序提供简单的菜单结构选项来提供给用户来进行选择
高级控制台 UI
用于构建控制台应用程序和控制台用户界面的库.
- asciigraph: 没有其他依赖的可以在命令行应用中制作轻量级的
ASCII行图 ┈┈╭╯ 的 go 语言工具包 - aurora:
ANSI终端颜色,支持fmt.Printf/Sprintf - cfmt: 受
bootstrap颜色类启发的上下文fmt。 - cfmt: 简单方便的格式化风格化输出,与
fmt库完全兼容 - chalk: 符合直觉的用于美化命令行输出的库
- colourize: 支持终端输出带色彩的
ANSI字符。 - ctc: 非侵入式的跨平台终端颜色库,不需要修改打印方法
- go-ataman: 用于在终端中渲染
ANSI彩色文本模板的Go库。 - go-colorable:
Windows上使用的可以输出彩色文本的库 - go-colortext: 用于在终端进行多彩文字输出的库
- go-isatty:
go语言版本的isatty - go-prompt: 受 python-prompt-toolkit 的启发,用于构建强大的交互式提示符的 go 语言库
- gocui: 极简的控制台用户界面创建库.
- gommon/color :多样的命令行文本
- gookit/color: 格式化终端文本。
- mpb: 为命令行提供多个进度条的工具
- progressbar: 适用于各种操作系统的,线程安全进度条管理库。
- pterm: 在每个平台上美化控制台输出的库,有许多可组合的组件。
- simpletable: 在终端中用
Go实现简单的表格。 - tabby: 超级简单的
Golang表格的库。 - table: 基于终端颜色的表格库。
- tabular: 从命令行工具中打印
ASCII表格,而不需要向API传递大量数据集。 - termbox-go: Termbox 是一个用于创建跨平台文本界面的库。
- termdash: 基于
termbox-go的Go终端仪表盘,灵感来自 termui 。 - termui: 基于
termbox-go的Go终端仪表盘,灵感来源于 blessed-contrib 。 - uilive: 用于实时更新终端输出的库
- uiprogress :用于渲染进度条的库
- uitable: 用于改善命令行中,表格数据可读性的库
- yacspin: 用于终端的
CLi Spinner工具包。
配置管理
配置解析库
- aconfig: 简单、有用的配置加载器。
- cleanenv: 简约的配置读取器 (从文件、
ENV以及任何你想要的地方读取)。 - config: 一个轻量级但功能强大的
Go项目配置包。 - config: 云端本地应用配置。只需两行就可以将 ENV 绑定到结构上
- config: 具有环境变量和标志解析功能的
JSON或YAML配置包装器。 - configuration: 用于从环境变量、文件、标志和 “默认 “标签初始化配置结构的库。
- configure: 可以通过多种途径进行配置,包括
JSON标记位以及环境变量 - configuro: 来自
ENV和Files的意见性配置加载和验证框架,专注于12-Factor兼容应用程序。 - confita: 从多个后端级联加载配置到一个结构中。
- conflate: 从任意 URL 合并多个
JSON/YAML/TOML文件的库 / 工具,对JSON模式进行验证,并应用模式中定义的默认值。 - env: 解析环境变量为
Go语言结构体 - envcfg: 解析环境变量为
Go语言结构体 - envconf: 通过环境变量来配置
- envconfig: 通过环境变量读取配置
- envh: 管理环境变量的助手
- fig: 用于从文件和环境变量中读取配置的小型库(带有验证和默认值)。
- gcfg: 读取类似
INI类型的配置文件为Go语言结构体,支持自定义类型。 - genv: 通过
dotenv支持轻松读取环境变量。 - go-aws-ssm: 从
AWS System Manager - Parameter Store获取参数的Go包。 - go-ini: Go 包,可对 INI 文件进行整理和解整理。
- go-ssm-config: 用于从
AWS SSM(参数存储)加载配置参数的Go工具。 - go-up: 一个简单的配置库,具有递归占位符解析功能,没有各种怪招。
- goConfig: 解析一个结构作为输入,并将命令行、环境变量和配置文件中的参数填充到该结构的字段中。
- godotenv: 把
Ruby的dotenv库移植到Go(从.env中加载环境变量)。 - gofigure: 让
Go语言应用程序配置变得简单 - gone/jconf : 模块化 JSON 配置工具。允许你将配置参数结构体和使用它的代码放在一起,而不需要让主配置文件了解所有子模块的细节来进行序列
- gookit/config: 应用程序配置管理 (
load,get,set), 支持JSON、YAML、TOML、INI、HCL - harvester:
Harvester,一个易于使用的静态和动态配置包,支持envars和Consul集成。 - hjson: 便于程序员使用和阅读的配置文件格式。具有更加轻松的语法,更少的错误和更多的注释
- hocon: 用于使用
HOCON(一种人类友好的 JSON 超集) 格式的配置库,支持环境变量、引用其他值、注释和多文件等功能。 - ingo: 将配置标记持久化到一个类似
ini的文件中 - ini: 用于读写 INI 文件的库
- joshbetz/config: 消息配置库,可以解析环境变量、
JSON文件并根据SIGHUP自动重新载入 - kelseyhightower/envconfig: 用于管理环境变量配置数据的
Go库。 - koanf: 轻量级、可扩展的库,用于读取 Go 应用程序中的配置。内置支持
JSON、TOML、YAML、env、命令行。 - konfig: 为分布式处理时代的
Go提供可组合、可观察和可执行的配置处理。 - mini: 用于解析类
ini文件的库 - nasermirzaei89/env: 用于读取环境变量的简单实用包
- onion: 基于分层结构的 Go 配置库,支持
JSON、TOML、YAML、properties、etcd、env以及使用PGP加密。 - store:
Go的轻量级配置管理器,支持JSON、TOML、YAML、properties等。 - swap: 基于构建环境,递归地实例化 / 配置结构解析库。
- typenv: 简约、零依赖、类型化的环境变量库。
- viper:
Go语言配置工具 - xdg: 遵守
XDG标准 的配置工具 XDG 标准
持续集成
持续集成的辅助工具
- CDS: 企业级
CI/CD和DevOps自动化开源平台。 - drone:
Drone是一个基于Docker的持续集成平台,使用Go语言编写 - duci: 简单的
ci服务器,不需要特定领域的语言。 - gomason: 从一个干净的工作空间测试、构建、签署和发布你的
go二进制文件 - goveralls:
Coveralls.io是一个持续代码覆盖率检测系统,这个库提供了Go语言的支持 - overalls: 针对多
package的Go语言项目,为Goveralls这样的工具生成覆盖率报告 - roveralls: 回归覆盖测试工具
CSS 预处理
预处理css文件的库
- gcss: 纯
Go语言编写的CSS预处理器 - go-libsass: 100% 兼容
Sass的库libsass的Go语言封装
数据结构
go语言实现的数据结构与算法
- algorithms: 算法和数据结构学习资料
- binpacker: 二进制数据封包拆包工具,帮你构建自定义的二进制数据流
- bit:
Go语言集合数据结构。提供了额外的位操作功能 - bitset: 实现了
bitset的Go语言包. - bloom:
Go语言实现的布隆过滤器(bloom filter) - bloom:
Go语言实现的布隆过滤器 - boomfilters : 概率统计数据结构,用于处理大量连续的数据。
- cmap: 一个用于
go的线程安全的并发地图,支持使用interface{}作为键 - concurrent-writer:
bufio.Writer的高并发drop-in替代品 - conjungo: 一个小巧、强大、灵活的合并库。
- count-min-log:
Go语言实现的Count-Min-Log sketch算法 (类似 Count-Min sketch 算法,但是使用的内存更少) - crunch:
Go包,实现缓冲区,方便处理各种数据类型。 - cuckoofilter:
Cuckoo过滤器:一个用 go 语言实现的计数布隆过滤器的替代品 - deque: 高度优化的双端队列。
- deque: 快速的环形缓冲区
deque(双端队列)。 - dict:
Go的类似Python的字典(dict) - encoding: 整型压缩库
- go-adaptive-radix-tree:
Go语言实现的自适应基数树 - go-datastructures: 一组有用的、高性能的、线程安全的数据结构
- go-edlib: 与 Unicode 兼容的 Go 字符串比较和编辑距离算法库(
Levenshtein、LCS、Hamming、Damerau levenshtein、Jaro-Winkler等)。 - go-ef:
Elias-Fano编码的Go实现。 - go-geoindex: 基于内存存储的地理索引
- go-mcache: 快速的内存
key:value存储 / 缓存库。 - go-rquad: 区域四叉树,支持有效点位置和领域发现
- gocache: 完整的
Go缓存库,支持多个存储(内存、memcache、redis......)。 - goconcurrentqueue: 并发
FIFO队列。 - gods:
Go语言数据结构、容器、集合、列表、栈、键值对、BidiMaps、树、HashSet等 - gofal:
Go的微分算法库。 - golang-set: 线程安全和非线程安全的高性能集合
- goset:
Go集合实现。 - goskiplist:
Go语言实现的跳跃表 - gostl: 数据结构和算法库,旨在提供类似于
C++ STL的功能。 - gota: 为 go 语言实现了数据帧,序列以及数据噪音的方法
- goterator: 迭代器的实现,提供映射和减少功能。
- hide: 具有 hash 函数功能,以防止向客户端发送敏感 ID`。
- hilbert: 用于映射空间填充曲线(例如希尔伯特曲线和皮亚诺曲线)和数值的库。
- hyperloglog:
HyperLogLog的 go 语言实现 - iter:
C++ STL迭代器和算法的 Go 实现。 - levenshtein: 编辑距离(
levenshtein distance)和相似性度量计算库 - levenshtein: 在 Go 中计算
levenshtein距离的实现。 - mafsa: Go 语言实现的
MA-FSA, 包含最小完美哈希实现 - merkletree: 实现了梅克尔树,提供了一种高效、安全的数据结构内容验证方法
- mspm: 用于信息检索的多字符串模式匹配算法。
- nan: 在一个库中实现了零分配的
Nullable结构,并提供了方便的转换函数。 - null: 可为
null的Go类型,它们可以被 `marshalled/unmarshalled 到 JSON。 - parsefields: - 用于解析
JSON类日志的工具,用于收集特殊字段和特定事件。 - pipeline: 一个带有扇形输入和扇形输出的管道的实现。
- ptrie: 前缀树的实现
- remember-go: 用于缓存慢速数据库查询的通用接口(由
redis、memcached、ristretto或内存支持)。 - ring: 高性能、线程安全的
bloom过滤器的 Go 实现。 - roaring: 实现了压缩
bitsets算法的 Go 语言库 - set: 在
Go中使用LinkedHashMap实现简单的集合数据结构。 - skiplist: 非常快的
Go Skipipllist实现。 - skiplist: 在
Go中实现的Skiplist。 - slices:
slice操作函数 - timedmap: 具有过期键值对的
map。 - treap: 使用树堆的持久化快速有序
map - trie:
Go语言实现的Trie树 - ttlcache: 基于过期时间的内存字符串缓存接口。
- typ: 空类型安全的基础类型转换器和从复杂结构中取值的开发库。
- willf/bloom: 实现了布隆过滤器的库
数据库
go语言实现的数据库
- badger:
Go中的快速键值存储库。 - bbolt:
Go的嵌入式键值数据库。 - bcache: 最终一致的分布式内存缓存
Go库。 - BigCache: 为 GB 量级数据设计的高效键 / 值缓存
- Bitcask:
Bitcask是一个用纯 Go 编写的可嵌入的、持久的、快速的键值(KV)数据库,由于采用了bitcask盘上布局(LSM+WAL), 它具有可预测的读 / 写性能、低延迟和高吞吐量。 - buntdb: 快速,可嵌入的,内存键值数据库,可定义索引及
spatial - cache: 内存中的
key:value存储,有过期时间,0 依赖,<100 LoC,100% 覆盖。 - cache2go: 基于内存存储的键值缓存,支持自动基于超时的自动失效
- clusteredBigCache:
BigCache支持集群和单个项目过期。 - cockroach: 可扩展的、一致的事务型数据库
- Coffer: 简单的
ACID键值数据库,支持事务。 - couchcache:
RESTful缓存微服务,基于Couchbase数据库 - CovenantSQL:
CovenantSQL是一个区块链上的 SQL 数据库。 - Databunker: 为符合
GDPR和CCPA而构建的个人身份信息PII存储服务。 - dgraph: 可扩展的、分布式的、低延时、高吞吐的图数据库
- diskv: 具有
disk-backed功能的持久化键值存储 - eliasdb: 无依赖、事物型图数据库,支持
REST API、短语搜索以及类SQL的查询语言 - fastcache: 针对大量条目的快速线程安全内存缓存。将
GC开销降到最低。 - GCache: 支持缓存过期、
LFU、 LRU和ARC的缓存库 - go-cache: 基于内存存储的缓存,适用于分布式部署的应用
- goleveldb:
Go中 LevelDB 键 / 值数据库的实现 - groupcache:
Groupcache是一个缓存及缓存填充库,在很多情况下用于替代memcached. - immudb:
immudb是一个轻量级、高速的不可变数据库,适用于用Go编写的系统和应用程序。 - influxdb: 用于度量、事件和实时分析的可扩展数据存储。
- Kivik:
Kivik为CouchDB、PouchDB和类似的数据库提供了一个通用的Go和GopherJS客户端库。 - ledisdb:
Ledisdb是一个高性能NoSQL数据库,类似Redis - levigo:
LeviGo是LevelDB的Go语言封装 - moss:
Moss是一个简单的LSM键值存储引擎,100% Go 语言实现 - nutsdb:
Nutsdb是一个用纯Go编写的简单、快速、可嵌入、持久化的键 / 值存储。它支持完全可序列化的事务和许多数据结构,如列表、集合、排序集合。 - piladb: 轻量级
RESTful数据库引擎,基于堆栈结构 - pogreb: 嵌入式键值存储,适用于重读工作负载。
- prometheus: 监控系统及时间序列数据库
- pudge: 使用
Go的标准库编写的快速、简单的键值存储。 - rosedb: 一个基于 LSM+WAL 的内嵌 k-v 数据库,支持多种数据结构,如字符串、列表、哈希表、集合、有序集合
- rqlite: 基于
SQLite的轻量级的、分布式的关系型数据库 - Scribble: 小巧的
JSON文件存储 - slowpoke: 具有持久性的键值存储。
- tempdb: 临时数据的键值对存储
- tidb:
TiDB是一个分布式的SQL数据库。受到了Google F1的启发 - tiedot: 基于
Go语言的NoSQL 数据库 - unitdb: 用于物联网、实时消息应用的快速时序数据库。
- Vasto: 一个分布式高性能键值存储。在磁盘上。最终一致。HA。能够在不中断服务的情况下增长或收缩。
- VictoriaMetrics: 快速、资源高效、可扩展的开源时间序列数据库。可作为
Prometheus的长期远程存储。支持PromQL。
数据库迁移工具
- avro: 发现
SQL模式并将其转换为AVRO模式。查询SQL记录到AVRO字节。 - darwin: 数据库模式增量库
- go-fixtures: 类似
DjanGo fixtures, 用于 Golang 的內建dababase/sql库 - go-pg-migrations: 帮助使用
go-pg/pg编写迁移的Go包。 - gondolier: 使用
struct装饰器的数据库迁移库。 - goose: 数据库迁移工具。你可以通过编写增量
SQL或Go语言脚本来管理你的数据库 - gormigrate: 数据库模式迁移帮助工具,用于
Gorm ORM. - migrate: 数据库迁移。命令行及
Go语言库 - migrator: 简单的
Go数据库迁移库。 - pravasan: 简单的迁移工具,目前支持
MySQL但是近期打算支持Postgres, SQLite, MonGoDB等等 - schema: 在你的 Go 二进制文件中嵌入数据库 /sql 兼容数据库的模式迁移库。
- skeema:
MySQL的纯 SQL 模式管理系统,支持sharding和外部在线模式变更工具 - soda: 数据库迁移、创建、 ORM 等等,用于
MySQL, PostgreSQL,以及SQLite. - sql-migrate: 数据库迁移工具,允许利用
Go-bindata将数据库迁移嵌入应用程序
数据库工具
- bucket: 为
Couchbase优化的数据结构框架,专门针对bucket的使用进行了优化。 - chproxy:
HTTP代理的ClickHouse数据库。 - clickhouse-bulk: 收集小的插入请求后一并发送大的请求到
ClickHouse服务器。 - datagen: 快速的数据生成器,支持多表并支持多行
DML - dbbench: 数据库基准测试工具,支持多个数据库和脚本。
- go-mysql: 用于处理
MySQL协议及复制的Go语言工具集 - go-mysql-elasticsearch: 将你的
MySQL数据自动同步到Elasticsearch - kingshard:
kingshard是一个Go语言编写的高性能MySQL数据库代理 - myreplication:
MySql二进制log复制监听器,支持基于语句和基于行的复制 - octillery: 用于
sharding数据库的Go包(支持所有 ORM 或原始 SQL)。 - orchestrator:
MySQL复制拓扑管理器及可视化工具 - pg_timetable:
PostgreSQL的高级调度。 - pgweb: 基于
Web的PostgreSQL数据库浏览工具 - prep: 无需更改代码使用已准备好的
SQL语句的库 - pREST: 为
PostgreSQL数据库提供RESTful API - rwdb:
rwdb为多个数据库服务器的设置提供读取复制功能。 - vitess:
vitess提供了能够使大型web服务MySQL数据库的扩展变得更加容易的服务器及工具
SQL 查询语句构建库
- buildsqlx: 针对
PostgreSQL的Go数据库查询构建库。 - dbq:
Go的数据库操作库。 - Dotsql:
Go语言库,帮助你将sql文件保存在一个地方并且方便的取用 - gendry: 非侵入式
SQL构建器和强大的数据绑定器。 - godbal: Go 的数据库抽象层(
dbal)。支持SQL构建器,并能轻松获得数据库结果。 - goqu: 地道的
SQL语句创建器和查询库 - gosql: 具有更好的空值支持的 SQL 查询生成器。
- igor:
PostgreSQL的抽象层,支持高级功能以及类Gorm的语法 - jet: 在
Go中编写类型安全的SQL查询框架,能够轻松地将数据库查询结果转换为所需的任意对象结构。 - mpath: 用于
SQL记录的MPTT (Modified Preorder Tree Traversal)包 - 实物化路径的实现 - ormlite: 轻量级软件包,包含一些类似于
ORM的功能,以及针对sqlite数据库的帮助程序。 - ozzo-dbx: 强大的数据检索方法以及与
DB无关的查询构建能力。 - qry: 从带有原始
SQL查询的文件中生成常量的工具。 - sq: 适用于
Go的类型安全SQL构建器和结构映射器。 - sqlf: 快速的
SQL查询构建器。 - sqlingo: 在
Go中构建SQL的轻量级DSL。 - sqrl:
SQL查询创建器,是Squirrel的一个分叉版本,进行了性能方面的优化 - Squalus:
Go SQL包的薄层,使其更容易执行查询。 - Squirrel: 一个帮助你构建
SQL查询的库 - xo: 基于已知的数据库表或自定义查询生成地道的
Go语言代码,支持PostgreSQL, MySQL, SQLite, Oracle, 以及Microsoft SQL Server.
数据库驱动
连接和操作数据库工具
关系型数据库
- avatica
Apache Phoenix/Avatica SQL驱动 - bgc: 数据库连接工具包,用于通过
Go语言访问BigQuery - firebirdsql:
Firebird RDBMS SQL驱动 - go-adodb:
Microsoft ActiveX对象数据库驱动 - go-mssqldb: 适用于 Go 的
Microsoft MSSQL驱动。 - go-oci8:
Oracle驱动 - go-sql-driver/mysql: Go 语言
MySQL驱动 - go-sqlite3: Go 语言的
SQLite3驱动 - gofreetds:
Microsoft MSSQL驱动。FreeTDS的 go 语言封装 - FreeTDS:
Microsoft MSSQL驱动。是 FreeTDS 的 Go 封装器。 - goracle: 用于
Go的Oracle驱动程序,使用ODPI-C驱动程序。 - pgx:
PostgreSQL驱动,支持比database/sql更多的特性 - pq: 用于
database/sql的Pure Go Postgres驱动。 - Sqinn-Go: 纯 Go 的
SQLite驱动。
- avatica
NoSQL 数据库
- aerospike-client-go:
Go语言的Aerospike客户端。 - arangolite:
ArangoDB的轻量级golang驱动 - asc: 用于
Aerospike for go的数据存储连接。 - dynago:
Dynago是DynamoDB的客户端。 - forestdb:
ForestDB的Go语言封装 - go-couchbase:
Go语言Couchbase客户端 - go-pilosa: 用于 Pilosa 的 Go 客户端库。
- go-rejson:
Redislabs的ReJSON模块的Golang客户端,使用Redigo golang客户端。在redis中轻松地将结构体作为JSON对象进行存储和操作。 - gocb:
Couchbase Go官方 SDK。 - gocql:
Apache Cassandra的 Go 语言驱动 - godis: 由
golang实现的redis客户端,灵感来自jedis。 - godscache:
Google Cloud Platform Go Datastore包的封装器,使用 memcached 增加缓存。 - gomemcache:
Go编程语言的memcache客户端库。 - gorethink:
RethinkDB的 Go 语言驱动。 - goriak:
Riak KV的Go语言驱动 - mgm: 用于
Go的基于MongoDB模型的ODM(基于官方 MongoDB 驱动程序) - mgo:
MonGoDB驱动,通过简单的API现了丰富的、经过测试的特性,这些 API 遵循 Go 语言的习惯 - mongo-go-driver:
Go语言的官方MongoDB驱动。 - neo4j:
Neo4j Rest API的Go语言接口 - Neo4j-GO:
Go语言实现的Neo4j REST客户端 - neoism:
Go语言Neo4j客户端 - qmgo: Go 的
MongoDB驱动。它基于官方的MongoDB驱动,但和 Mgo 一样更容易使用。 - redeo:
Redigo是Redis数据库的 Go 客户端。 - redigo:
RediGo是Redis数据库的Go语言客户端. - redis: 兼容 R
edis协议的TCP服务器 / 服务. - xredis: 类型安全的、可定制的、简洁易用的
Redis客户端
- aerospike-client-go:
搜索引擎和文本数据库
- bleve: 现代文本索引库
- elastic:
Go语言的Elasticsearch客户端 - elasticsql 将
sql转换为elasticsearch dsl - elastigo:
Elasticsearch客户端库 - go-elasticsearch: Go 的官方
Elasticsearch客户端。 - goes: 用于和
Elasticsearch交互的库 - riot:
Go开源,分布式,简单高效的搜索引擎。 - skizze: 概率数据结构服务和存储。
多个后端:
日期和时间
用于处理日期和时间的库
- carbon: 简单的时间扩展程序,有很多有用的方法,是
PHP Carbon库的接口 - cronrange: 解析
Cron风格的时间范围表达式,检查给定时间是否在任何范围内。 - date: 增强了 Time 的功能,用于处理日期、日期范围、时间跨度、时间段和日期时间。
- dateparse: 在不知道格式的情况下解析日期。
- durafmt: 持续时间格式化
- feiertage: 一组计算德国公共假期的函数,比如复活节、感恩节等
- go-persian-calendar: - 太阳历
- go-str2duration: 将字符串转换为持续时间。支持
time.Duration返回字符串等。 - go-sunrise: 计算指定地点的日出和日落时间。
- go-week: 处理星期的库
- iso8601: 有效地解析
ISO8601日期时间,而无需使用regex。 - kair: 日期和时间 -
Golang格式化库。 - now:
Now是一个Go语言的时间工具集 - NullTime: - 时间可以是
NULL的库 - strftime:
C99兼容的strftime格式化器。 - timespan: 用于与时间间隔交互,定义为开始时间和持续时间
- timeutil: 为
Go语言时间包扩展了有用的功能,例如时间间隔和格式化 - tuesday:
Ruby兼容的Strftime函数。
分布式系统
- arpc: 更有效的网络通信,支持双向呼叫、通知、广播。
- celeriac: 利用
Go语言对Celery的workerß 任务事件进行交互和监控的库 - consistent: 有限负载的一致哈希算法库。
- consistenthash: 使用可配置的副本实现一致的哈希。
- dht:
BitTorrent Kademlia DHT的实现。 - digota grpc 电子商务微服务。
- dot : 使用操作转换 / OT 的分布式同步库。
- doublejump: 改版后的
Google的跳转一致哈希。 - dragonboat:
Go中一个功能完整且高性能的多组Raft库。 - drmaa: 集群调度工具的任务提交库,基于标准
DRMAA - dynamolock:
DynamoDB支持的分布式锁的实现。 - dynatomic: 将
DynamoDB作为原子计数器使用的库。 - emitter-io: 使用
MQTT、Websockets和love构建的高性能、分布式、安全和低延迟的发布 - 订阅平台。 - flowgraph: 基于流的编程包实现的 MPI 风格的读取,发送协同层;
- gleam: 快速、可扩展的分布式
map/reduce系统,使用纯Go语言和Luajit编写,融合了 Go 语言的高并发能力和 Luajit 的高性能,可以独立或分布式部署运行。 - glow: 易于使用的可扩展的分布式大数据处理、
Map-Reduce、DAG执行,全部用纯 Go 编写。 - gmsec: Go 分布式系统开发框架。
- go-health: 用于在服务中启用异步依赖性健康检查的库。
- go-jump:
Google "Jump"一致性哈希函数的接口 - go-kit: 为服务工具吧,支持服务发现、负载均衡 、可插拔传输以及请求追踪等
- go-micro: 一个分布式系统开发框架。
- go-mysql-lock: 基于
MySQL的分布式锁。 - go-pdu: 基于身份的去中心化社交网络。
- go-sundheit: 为
golang服务定义异步服务健康检查提供支持的库。 - gorpc: 简单、快速、可扩展的
RPC库,针对高负载场景 - grpc-go:
gRPC的 Go 语言实现。基于HTTP/2的RPC。 - hprose: 非常新颖的 RPC 库,现在支持 25 种以上的语言。
- jsonrpc:
jsonrpc包实现了JSON-RPC 2.0. - jsonrpc:
JSON-RPC 2.0 HTTP客户端实现 - KrakenD: 带有中间件的,高性能
API网关框架 - liftbridge: 用于
NATS的轻量级、容错消息流。 - micro: 面向云计算及其他领域的分布式系统运行时。
- NATS: 轻量级、高性能微服务系统,用于微服务、物联网以及云
- outboxer:
Outboxer是一个实现outbox模式的go库。 - pglock:
PostgreSQL支持的分布式锁的实现。 - raft:
Raft共识协议的Golang实现,由HashiCorp. 开发。 - raft:
Raft共识协议的Go实现,由CoreOS提供。 - rain:
BitTorrent客户端和库。 - redis-lock: 使用 Redis 实现的简化的分布式锁。
- resgate: 用于构建
REST、实时和RPC API的实时API网关,所有客户端都可以无缝同步 - ringpop-go: 为
Go应用提供可扩展、容错的应用层分片。 - rpcx:
rpcx是一个类似阿里巴巴Dubbo和微博Motan的分布式的RPC服务框架 - Semaphore: 直接的(微)服务协调器。
- sleuth: 在
HTTP服务之间进行无主p2p自动发现和 RPC 通信 (使用 ZeroMQ)ß - tendermint: 使用
Tendermint一致性及区块链协议的高性能的中间件,用于将任何语言编写的状态机转换为一个拜占庭容错状态机, - torrent:
BitTorrent客户端
动态 DNS
更新动态dns记录的库和工具
- DDNS: 以
digital oceanDNS 为后台的个人 DDNS 客户端。 - dyndns: 后台
Go进程,定期自动检查您的 IP 地址,并在您的地址发生变化时更新(一个或多个)谷歌域名的动态 DNS 记录。 - GoDNS: 用 Go 编写的动态
DNS客户端工具,支持DNSPod和HE.net。
邮件库
邮件管理和发送的go语言库
- chasquid: 用 Go 编写的 SMTP 服务器。
- douceur:
HTML邮件中的内联CSS库 - email: 健壮的、灵活的
email库 - go-dkim:
DKIM库,用于对email进行签名和验证 - go-imap:
IMAP库,用于客户端和服务器 - go-message: 用于互联网消息格式和邮件的库
- go-premailer: 在
Go中为HTML邮件提供在线样式。 - go-simple-mail:
go语言实现的基于简单smtp协议的邮件发送库 - Hectane: 轻量级
SMTP客户端,提供HTTP API - hermes: 一个用于生成干净、响应式
HTML e-mail的包 - mailchain: 用
go写的用于发送加密邮件到区块链地址的邮件库 - mailgun-go: 使用
Mailgun API发送邮件的 Go 库。 - MailHog:
Email及SMTP测试工具,具有 web 及 API 接口 - SendGrid:
SendGrid的 Go 语言库,用于发送电子邮件 - smtp:
SMTP服务器协议状态机
脚本语言与嵌入式编程
在你的go代码中嵌入其他脚本语言
- anko:
Go语言编写的解释器 - binder: 基于 gopher-lua 的 go 语言 Lua 接口,
- cel-go: 快速、可移植、非图灵完全表达式评估和渐进分型。
- expr:
Go的表达式评估引擎,具有快速、非图灵完备、动态类型化、静态类型化的特性。 - gentee: 可嵌入脚本编程语言。
- gisp:
Go中的简单LISP。 - go-duktape:
Go的Duktape JavaScript引擎封装。 - go-lua:
Lua 5.2虚拟机的纯 Go 语言接口 - go-php:
PHP的Go语言接口 - go-python:
CPython C-API的Go语言接口 - goja: 在 Go 中实现
ECMAScript 5.1(+)。 - golua:
lua C API的Go语言接口。 - gopher-lua:
Go语言编写的Lua 5.1虚拟机和编译器 - gval: Go 编写的高度可定制的表达式语言。
- ngaro: 可嵌入的 Ngaro 虚拟机实现,可在
Retro中编写脚本。 - purl: 嵌入
Go语言的Perl 5.18.2 - tengo:
Go的字节码编译脚本语言。
错误处理
go 语言错误处理库
- emperror:
Go库和应用程序的错误处理工具和最佳实践。 - eris: 在
Go中处理、跟踪和记录错误的更好方法。与标准错误库和github.com/pkg/errors兼容。 - errlog: 用于确定错误的责任源代码(以及其他一些快速调试功能,可以嵌入到任何的日志服务中。
- errors: 标准库错误包和
github.com/pkg/errors的替代包。提供各种错误处理单元。 - errors: 提供简单错误处理单元的包。
- errors: 简单的
golang错误处理包。 - errors: 最简单的错误封装器,性能卓越,内存开销最小。
- errors: 最小的错误处理包,具有自定义错误类型等特性
- errorx: 功能丰富的错误处理包,包括堆栈信息获取、错误组成分析等
- Falcon: 简单但功能强大的错误处理包。
- go-multierror: 用于将错误列表表示为单个错误的包
- tracerr : 带有堆栈跟踪和源片段的
Golang错误处理包。
文件处理
处理文件和文件系统操作的库
- afero:
go语言编写的对文件系统进行抽象的系统框架 - afs: 适用于
Go的抽象文件存储。 - baraka: 用于轻松处理
http文件上传的库。 - bigfile: 文件传输系统,支持用
http api、rpc调用和ftp客户端管理文件。 - checksum: 计算大文件的信息摘要,如
MD5和SHA256。 - copy: 递归复制目录。
- flop: 文件操作库,目的是与 GNU cp 进行镜像。
- go-csv-tag: 使用
tag导入csv - go-decent-copy: 文件复制功能库。
- go-exiftool: 为
ExifTool提供绑定服务,ExifTool是一个著名的库,用于从文件(图片、PDF、office…)中提取尽可能多的元数据 - go-gtfs: 用
go加载gtfs文件 - gut/yos: 简单可靠的文件操作包,支持对文件、目录和符号链接的
copy/move/diff/list。 - notify: 类似
os/signal的文件系统提示库,具有简单的 API. - opc: 为
Go加载Open Packaging Conventions (OPC)文件 - parquet: 读取和写入 parquet 文件。
- pdfcpu: PDF 处理器。
- skywalker: 允许你简单方便的并发浏览文件系统
- stl: 读取和写入
STL文件的模块,采取并发的读取算法。 - tarfs: 为
tar文件实现的文件系统接口 - todotxt
todo.txt文件的 go 语言解析器。 - vfs: 适用于
Go的多个文件系统类型,如os、S3和GCS的可插拔、可扩展的文件系统功能库。
金融领域相关库
处理货币与金融领域的库
- accounting:
Go语言金钱及货币格式 - currency: 处理货币金额,提供货币信息和格式。
- currency: 高性能、精确的货币计算包。
- decimal: 支持任意精度的十进制数的 go 包
- fastme:
Go实现的 快速可扩展的匹配引擎 。 - go-finance:
Go中的综合金融市场数据。 - go-finance: 用于货币时间价值(年金)、现金流、利率转换、债券和折旧计算的金融函数库。
- go-finance: 用于获取汇率、通过 VIES 查询增值税号和查询 IBAN 银行账号的模块。
- go-finnhub: 来自
finnhub.io的股市、外汇和加密数据客户端。访问来自 60 多家证券交易所、10 家外汇经纪商和 15 家以上加密交易所的实时金融市场数据。 - go-money:
Fowler's Money模式的实现。 - ofxgo: 查询
OFX服务器并解析其响应 (有一个示例的命令行客户端) - orderbook:
Golang中的限价订单簿的匹配引擎。 - techan: 具有高级市场分析和交易策略的技术分析库。
- transaction: 以多线程模式运行的嵌入式的账户交易数据库,。
- vat: VAT 验证及欧洲增值税率工具
表单
表单解析与绑定
- bind: 可以表单数据绑定到任意的
Go变量上 - binding: 将来自
net/HTTP请求的表单、JSON数据绑定到结构体 - conform: 检查用户输入并基于结构标签来清理数据
- form: 解码
url中的数据到Go语言变量中以及将Go语言变量编码进url。 - formam: 将表单数据解码到结构体
- forms: 框架无关的表单 / JSON 数据解析验证库,支持多部分表单及文件
- gorilla/csrf: 为
Go语言web应用提供CSRF防御 - nosurf:
CSRF防御中间件 - qs: 用于将结构体编码为
URL查询参数的Go模块 - queryparam: 将
url.Values解码为标准或自定义类型的可用结构体值。
函数式编程
- fpGo:
Golang中的单项式函数式编程功能 - fuego:
Go中实验室的函数式编程。 - go-underscore:
Go函数式集合工具。
游戏开发
- Azul3D:
Go语言编写的3D游戏引擎 - Ebiten:
Go语言编写的简单的2D游戏库 - engo:
EnGo是一个开源的2D游戏引擎,遵循实体 - 组件 - 系统范式 - g3n:
Go 3D游戏引擎。 - go-astar: A * 路径查找算法的 Go 实现。
- go-sdl2: Simple DirectMedia Layer 的
Go封装。 - go3d: 专注性能的
2D/3D数学库 - gonet:
Go语言实现的游戏服务器框架 - goworld: 可扩展的游戏服务器引擎。
- Leaf: 轻量级游戏服务器框架
- nano: 基于
golang的轻量级、设施、高性能的游戏服务器框架。 - Oak:
go游戏引擎。 - Pitaya: 可扩展的游戏服务器框架,支持集群,并通过
C SDK为iOS、Android、Unity等提供客户端库。 - Pixel:
2D游戏引擎库 - prototype: 跨平台(
Windows/Linux/Mac)库,可利用最小的 API 创建桌面游戏。 - raylib-go: raylib 的 Go 语言接口,简单、易用的用于学习游戏编程的库
- raylib: raylib 的 Go 绑定,一个简单易用的电子游戏编程学习库。
- termloop: 终端游戏引擎,基于
Termbox - tile: 面向数据和缓存友好的
2D网格库 (TileMap)。
代码生成与泛型
- efaceconv: 代码生成工具,用于高效的将
interface{}转换为不可变类型,并且不需要进行任何内存分配 - gen: 代码生成工具,用于提供类似泛型的功能
- generis: 提供泛型、自由形式宏、条件编译和
HTML模板化的代码生成工具。 - go-enum: 从代码注释中生成
enums代码。 - go-linq: 类似
.NET LINQ的Go查询方法。 - go-xray: 使反射的使用更加简单的助手。
- goderive: 从输入类型导出函数。
- gotype:
Golang源代码解析,用法类似于reflect包。 - GoWrap: 使用简单的模板为
Go接口生成装饰器。 - interfaces: 命令行工具,用于生成接口定义
- jennifer: 不适用模板生成任意
Go语言代码 - pkgreflect: 用于包作用域反射的
Go语言预处理器 - typeregistry: 用于动态创建类型的库。
位置信息与地理 GEO 处理库
- geocache: 内存缓存,适用于基于地理位置的应用。
- geoserver: 用于通过
GeoServer REST API操纵GeoServer实例的 Go 包。 - gismanager: 将你的 GIS 数据(矢量数据)发布到
PostGIS和Geoserver的库。 - mbtileserver: 简单的基于
Go的服务器,用于存储mbtiles格式的地理信息。 - osm: 用于读取、写入和处理
OpenStreetMap数据和 API 的库。 - pbf:
OpenStreetMap PBF golang编码器 / 解码器。 - S2 geojson: 将
geojson转换为S2单元格,并在地图上演示一些S2几何特征。 - S2 geometry:
Go中的S2几何库。 - Tile38: 具有空间索引和实时地理围栏的地理位置数据库。
- WGS84: 坐标转换和变换的库(
ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM)。 - c4go: 将
C代码转换为go代码。 - f4go: 将
FORTRAN 77代码转为Go代码。 - gopherjs: 把
Go编译为JavaScript. - llgo: 基于
LLVM的Go语言编译器 - tardisgo: G
olang转换为Haxe进而转换为CPP/CSharp/Java/JavaScript的编译器.
Goroutines
goroutines的管理和使用
- ants: 高性能和低消耗的
goroutine池。 - artifex:
Golang的简单内存作业队列,使用基于worker的调度策略。 - async:
Go的另一个同步库(Future, Promise, Locks)。 - async: 安全的异步函数执行的方式,支持在出现 pannic 的情况下恢复它们。
- breaker: 采用了一种可以使执行流可中断的灵活的机制的包。
- channelify: 将你的函数转化为返回管道,以实现简单而强大的并行处理。
- conexec: 一个并发工具包,帮助你以一种高效和安全的方式并发执行函数。它支持指定整体超时以避免阻塞,并使用 goroutine 池来提高效率。
- cyclicbarrier: -
golang的CyclicBarrier。 - go-floc: 轻松编排
Go语言协程 - go-flow: 控制
Go语言协程的执行顺序 - go-tools/multithreading: 使用这个轻量级的库和简单的
API来管理goroutine池。 - go-trylock: 支持
Golang的读写锁的TryLock. - go-waitgroup: - 类似
sync.WaitGroup的错误处理和并发控制。 - goccm:
Go并发管理包,限制了允许并发运行的goroutine的数量 - gohive: 高性能且易于使用的
goroutine池。 - gollback: 异步简单函数工具,用于管理闭包和回调的执行
- goworker:
Goworker是一个基于 Go 语言的后台 worker - gowp: - gowp 是限制并发量的
goroutine池。 - gpool: 管理一个可调整大小的上下文感知的
goroutine池,并以这种方式来约束并发量。 - grpool: 轻量级
Goroutine池。 - hands: 用于控制多个
goroutine的执行和返回策略的进程控制器。 - Hunch: Hunch 提供的功能有。
All、First、Retry、Waterfall等功能,让异步流控制更加直观。 - kyoo: 提供了一个无限的作业队列和并发的工作池。
- neilotoole/errgroup:
sync/errgroup的替代方案,限于 N 个worker goroutine池。 - nursery:
Go中的结构化并发 - oversight:
versight是Erlang监督树的完整实现。 - parallel-fn: 并行执行函数。
- pond: 在
Go中编写的最小化和高性能的goroutine工作池。 - pool: 便于 goroutine 处理和取消的有限的消费者
goroutine池或无限的goroutine池, - queue: 类似于
sync.WaitGroup的队列包。帮助你控制和等待goroutine的执行,比如等待所有 goroutine 的结束等等。 - routine: 利用
context的go routine实现。 - semaphore: 基于管道和上下文的加锁 / 解锁操作。
- semaphore: 基于 CAS 的快速可调整大小的 semaphore 实现(比基于管道的 semaphore 实现更快)。
- stl: 基于软件事务性内存(
STM)并发控制机制的软件事务性锁。 - threadpool
Golang线程池的实现。 - tunny:
Go语言协程池 - worker-pool:
Go简单的异步worker池。 - workerpool: 用于限制任务执行的并发性的
goroutine缓冲池。
GUI
- app: 使用
Go, HTML和CSS进行应用程序开发的库, 支持MacOS, Windows。 - fyne: 基于
Material Design为Go设计的跨平台本地 GUI。支持 Linux, macOS, Windows, BSD, iOS` 和 Android. - go-astilectron: 使用
GO和HTML/JS/CSS(由 Electron 提供支持)构建跨平台 GUI 应用程序 - go-gtk:
GTK的Go绑定。 - go-sciter:
Sciter的Go语言接口,支持现代 GUI 程序开发的、嵌入式 HTML/CSS/ 脚本引擎。具有跨平台特性。 - gotk3:
GTK3的 Go 语言接口 - gowd: 使用
Go, HTML, CSS和NW.js语言进行快速、简单的桌面 UI 开发。具有跨平台特性 - qt:
Qt的Go语言接口 (支持Windows,macOS,Linux,Android,iOS,Sailfish OS, Raspberry Pi) - ui: 跨平台的原生 GUI 库
- Wails: 使用内置的
HTML渲染器。 - walk:
windows应用程序开发工具包 - webview: 支持双向
JavaScript绑定的跨平台 webview 窗口库(Windows,macOS,Linux)。 - go-appindicator:
libappindicator3 C库的 Go 绑定。 - gosx-notifier:
OSX桌面提醒库 - mac-activity-tracker:
OSX库,用于通知机器上的任何(可插拔)活动。 - mac-sleep-notifier: -
golang中的 OSX 睡眠 / 唤醒通知库。 - robotgo: 跨平台
GUI自动化工具,可以控制鼠标、键盘及其他设备 - systray: 跨平台的
Go语言库,用于在桌面提醒区域放置按钮及菜单 - trayhost: 跨平台的
Go语言库,用于在主机系统任务条区域放置按钮及菜单
硬件
与硬件交互的库、工具
- 请参考 go-hardware
Images 图像处理
- bild: 汇集了使用
Go语言编写的图像处理算法 - bimg: 利用
libvips进行快速高效的图像处理 - cameron:
Go的头像生成器。 - canvas: 将矢量图形转换成
PDF、SVG或光栅化图像。 - darkroom: 图像代理,具有可更改的存储后端和图像处理引擎,注重速度和弹性。
- draft: 使用简单的 YAML 语法为
GraphViz生成高级微服务架构图。 - geopattern: 从字符串创建优美的图样
- gg: 使用
Go编写的2D渲染程序 - gift: 图像处理过滤器包
- gltf: 高效且强大的
glTF 2.0读取器、写入器和验证器。 - go-cairo:
cairo图形库的Go语言接口 - go-gd:
GD库的Go语言接口 - go-nude: 使用
Go语言进行裸替检测 - go-opencv:
OpenCV的Go语言接口 - go-webcolors:
webcolors库的Go语言接口 - gocv: 使用
OpenCV 3.3+的计算机视觉的Go包。 - goimagehash:
Go感知图像哈希包。 - goimghdr:
imghdr模块为 Go 确定文件中包含的图像类型。 - govatar: 用于生成有趣头像的库和命令行工具。
- gridder: 基于网格的
2D图形库。 - image2ascii: 将图像转换为
ASCII码。 - imagick:
ImageMagick的MagickWand C语言API的Go语言接口 - imaginary: 快速且简单的
HTTP微服务,用于图像缩放 - imaging: 简单的
Go图像处理包。 - img: 图像操作工具精选集
- ln:
3D图线艺术渲染 - mergi: 用于图像处理的工具和
Go库(合并、裁剪、调整大小、水印、动画)。 - mort: 用
Go编写的存储和图像处理服务器。 - mpo:
MPO 3D照片解码与转换工具. - picfit: 一个使用
Go语言编写的图片缩放服务器 - pt: 光线追踪引擎
- resize: 使用
Go语言编写的具有常见差值功能的图片缩放工具 - rez: 纯
Go及SIMD实现的图像缩放库 - smartcrop: - 为任意图片进行剪裁的工具
- steganography: 用于
LSB隐写的纯Go库。 - stegify: 用于
LSB隐写的Go工具,能够隐藏图像中的任何文 - svgo: 用于生成
SVG的Go语言库 - tga:
tga是一个TARGA图像格式解码 / 编码器
物联网 (IOT)
- connectordb: 针对
iot的开源物联网平台 - devices: 管理物联网设备的套件库
- eywa:
Eywa是一个持续追踪所有连接设备的连接管理器 - flogo:
FloGo是一个用于物联网Edge App及集成的开源框架 - gatt:
Gatt是一个用于创建低功耗蓝牙外设的库 - gobot:
Gobot是一个用于机器人,物理计算以及物联网的库 - huego: 适用于
Go的广泛的Philips Hue客户端库。 - iot:
IoT是实现Google IoT Core设备的简单框架。 - mainflux: 工业物联网消息传递和设备管理服务器。
- periph: 外设
I/O,用于连接低级板卡设施。 - sensorbee: 轻量级物联网流处理引擎
作业调度
- clockwerk: 使用简单、流畅的语法来调度周期性作业的
Go包。 - clockwork:
Go中简单直观的作业调度库。 - go-cron:
Go的简单Cron库,它可以在不同的时间间隔执行闭包或函数,主要用于 web 应用程序和长期运行的守护进程。 - go-quartz: 简单、零依赖的
Go调度库。 - gocron: 简单流畅的
Go作业调度。这是・jasonlvhit/gocron・` 的一个积极维护的 fork. - gron: 使用简单的
Go API定义基于时间的任务,Gron的调度器将相应地运行它们。 - JobRunner: 智能且功能丰富的
cron任务调度器,内置任务队列和实时监控。 - jobs: 持久而灵活的后台作业库。
- leprechaun: 工作调度器,支持
webhooks、crons和经典调度系统。 - scheduler:
Cronjobs调度系统。
JSON
- ajson:
golang实现的支持JSONPath的抽象JSON格式解析库。 - dynjson: 向客户端提供自定义的
JSON格式的动态API库 - ej: 从不同的数据写入和读取
JSON的库。 - epoch: 包含用于将
Unix时间戳,epoch转换为 JSON 中的内置时间类型的处理库。 - gjo: 用于创建
JSON对象的小工具。 - GJSON: 用一行代码获取
JSON值。 - go-jsonerror:
Go-JsonError的目的是让我们能够轻松创建遵循JsonApi规范的json响应错误。 - go-respond: 用于处理常见
HTTP JSON响应的Go包。 - gojq:
Golang中的JSON查询库。 - gojson: 从示例
JSON自动生成Go结构体定义的库。 - JayDiff: 用
Go编写的JSON差异比较工具。 - jettison: 用于
Go的高性能、无反射的JSON编码器。 - JSON-to-Go: 将
JSON转换为Go结构 - json2go: 高级
JSON到Go结构的转换。提供能够解析多个JSON文档并创建适合所有 JSON 文档的结构的包。 - jsonapi-errors: 基于
JSON API错误引用的Go语言封装。 - jsonf: 用于高亮格式化和结构查询 JSON 的控制台工具。
- jsongo:
Fluent API,使其更容易创建Json对象。 - jsonhal: , 用于将自定义的结构体
marshal为兼容HAL的JSON response的库。 - jzon: 兼容标准
json库的JSON库。 - kazaam: 转换任意
json文档的的API库。 - mapslice-json: 用于有序地对
JSON中的map结构进行marshal/unmarshal。 - mp: 简单的
cli电子邮件解析器,能够接受标准输入并输出JSON日志
Logging 日志库
- distillog: 分级日志记录库(可以把它想象成
stdlib + log levels)。 - glg: 简单、快速、分级的日志库
- glo: 分级记录日志的库
- glog:
Go的分级日志 - go-cronowriter: 对日志文件基于当前日期和时间进行自动循环写入的库,类似
cronolog. - go-log: 一个包含
rack traces、对象转储和可选时间戳的日志库。 - go-log: 简单且可配置的
go日志库,包括分级、格式化和多项输出的特性。 - go-log: 日志库支持级别和多处理程序。
- go-log:
Go中的Log4j实现。 - go-logger: 支持日志分级的简单的日志工具
- gologger: 简单易用的日志库,可以在彩色控制台、文件或
Elasticsearch中记录 - gomol: 支持多种输出,结构化的日志模块,可以扩展它的输出
- gone/log: 快速、可扩展、全功能、兼容标准库的日志库
- httpretty: 将常规的
HTTP请求漂亮地打印在终端上用于调试(类似于http.DumpRequest)。 - journald:
systemd日志的本地日志API的Go实现。 - kemba: 受 debug 启发的小型调试日志工具,非常适合 CLI 工具和应用程序。
- log:
O(1)复杂度的日志系统,允许你将一个日志连接到多个输出 (例如stdout、文件和一个TCP连接)。 - log: Go 的结构化日志包。
- log: 简单、可配置、可扩展的
Go结构化日志库。 - log: 结构化日志接口。
- log-voyage: 用
golang编写的全功能日志库。 - log15: 简单、强大的
Go日志记录。 - logdump: 用于多级日志记录的软件包。
- logex:
Golang日志库,支持跟踪和级别,由标准日志库封装。 - logger: 日志库。
- logmatic:
Golang的彩色日志记录器,具有动态日志级别配置功能。 - logo:
Golang的日志记录库,可配置不同的写入器。 - logrusiowriter: 使用
logrus logger的io.Writer实现。 - logrus:
Go的结构化日志记录器。 - logrusly: logrus 插件,用于将错误发送到 Loggly
- logur: 日志记录接口和日志记录最佳实践的整合,它对诸多知名库如 logrus、go-kit log、zap , zerolog 等的功能进行了集成
- logutils: 对
Go语言标准日志工具进行了扩展,使其更好用 - logxi: 十二要素 app 日志工具,非常快速。
- lumberjack: 简单的循环日志工具。
- mlog: 简单的日志模块,可以分 5 级并有一个可选的循环日志文件记录功能,支持 stdout/stderr 输出.
- onelog:
Onelog是一个简单但非常高效的 JSON 日志库。它是目前所有场景下最快的 JSON 日志器。同时,它也是所需最少内存分配的库。 - ozzo-log: 高性能日志库,支持日志分级、分类及过滤。可以将过滤后的信息发送到不同的目的地 (例如: 控制台、网络、邮箱).
- phuslu/log: - 结构化日志系统。
- rollingwriter:
RollingWriter是一个具有自动轮转功能的 io.Writer 实现,它有多种策略来提供日志文件旋转。 - seelog: 灵活的、解耦的、格式化的日志库
- spew: - 为
Go语言的数据结构实现了一个整洁的打印功能,有助于调试 - sqldb-logger: - 用于
Go SQL数据库驱动的日志记录器,无需修改现有的*sql.DB标准用法。 - stdlog:
Stdlog是一个面向对象的库,提供了分级日志功能,对于定时任务很有用. - tail: 这个
Go语言软件包力争模拟BSD tail的功能 - xlog: 插件架构以及灵活的日志系统,具有日志等级控制,多日志目标以及自定义日志格式功能
- xlog: 结构化日志库
- zap: 快速的、结构化的、分级的日志库
- zerolog: 零内存分配 的
JSON日志库.
机器学习
- bayesian: 贝叶斯分类器
- CloudForest: 纯
Go语言编写的快速、灵活、多线程决策树 - eaopt: 进化优化库。
- evoli: 遗传算法和粒子群优化库。
- fonet: 用
Go编写的深度神经网络库。 - go-cluster:
k-modes和k-prototypes聚类算法的Go实现。 - go-deep: 用
Go编写的功能丰富的神经网络库。 - go-fann: 快速人工神经网络库
(FANN)的Go语言借口. - go-galib:
Go语言编写的遗传算法库 - go-pr:
Go语言模式识别库 - gobrain: 用
go语言编写的神经网络。 - godist: 各种概率分布以及相关方法库。
- goga:
Go语言遗传算法库 - GoLearn:
Go语言通用机器学习库 - golinear:
liblinear库的Go语言接口 - GoMind: Go 中的一个简单的神经网络库。
- goml: 即时
go语言机器学习库 - gonet:
Go的神经网络。 - Goptuna: 用
Go编写的黑盒函数的贝叶斯优化框架。一切都将被优化。 - goRecommend:
Go语言推荐算法库 - gorgonia: 基于图的计算库,类似于
Theano。提供了一些原型用于构建各种个样的机器学习和神经网络算法 - gorse: 用
Go编写的基于协作过滤的离线推荐系统后台。 - goscore: 用于
PMML的Go评分API。 - gosseract: 用于
OCR(光学字符识别)的Go包,使用Tesseract C++库。 - libsvm:
libsvm的Go语言版本,基于LIBSVM 3.14. - neat: 即插即用的并行
Go语言框架,用于增强拓扑神经网络 (NEAT). - neural-go:
Go语言实现的多层感知神经网络,通过反向传播算法进行训练. - ocrserver: 简单的
OCR API服务器,很容易被Docker和Heroku部署。 - onnx-go:
Open Neural Network Exchange (ONNX)的Go接口。 - probab: 概率分布函数。贝叶斯推理。用纯
Go编写。 - randomforest: 简单易用的
Go随机森林库。 - regommend: 推荐系统及协同过滤引擎
- shield:
go语言实现的贝叶斯文本分类器,具有灵活的标记器和存储后端。 - tfgo: 易于使用的
Tensorflow``go 语言封装:简化了官方Tensorflow Go的使用。 - Varis:
Golang神经网络。
消息系统
- ami: 基于
Redis集群可靠队列的Go客户端。 - APNs2:
go语言实现的基于HTTP/2苹果推送通知提供服务,可以向iOS、tvOS、Safari和OSX应用程序发送推送通知 - Asynq: 建立在
Redis之上,为Go提供的简单、可靠、高效的分布式任务队列,。 - Beaver: 实时消息服务器,用于在网络和移动应用中构建可扩展的应用内通知、多人游戏、聊天应用。
- Benthos: 在一系列协议之间建立消息流
go代码库 - Bus: 用于内部通信的简约型消息总线实现。
- Centrifugo: 实时消息服务器
- Commander: 一个高级事件驱动库,支持消费者 / 生产者模式,支持各种消息系统,如 Apache Kafka。
- Confluent Kafka Golang Client 是
Confluent为Apache Kafka和Confluent Platform开发的Golang客户端。 - dbus:
D-Bus的Go语言接口 - drone-line: 通过软件包,
docker或是Drone CI来发送 Line 通知 - emitter: 通过
Go语言的方式发送事件消息,可以使用通配符,断言,取消发送等优秀特性。 - event: 观察者模式的
go语言实现 - EventBus: 轻量级事件库,支持异步
- gaurun-client:
Go语言编写的 Gaurun 客户端 - Glue: 健壮的
Go和Javascript Socket库 (可以用来替代Socket.io). - go-mq: 具有声明式配置的
RabbitMQ客户端。 - go-notify:
freedesktop通知规范的本地实现 - go-nsq:
NSQ官方Go语言库 - go-res: 用于构建
REST/ 实时服务的包,使用NATS和Resgate实现客户端无缝同步。 - go-socket.ioGo 语言的
socket.io库,一个实时应用框架. - go-vitotrol: V
iessmann Vitotrol服务的Go语言客户端 - Gollum: 一个
n:m的多路复用器,从不同的源汇聚消息并向目标进行广播 - golongpoll:
HTTP长轮询服务器库,让 web 发布与订阅变的更简单. - gopush-cluster: Gopush-cluster 是一个
Go语言实现的支持集群的comet服务(支持websocket和tcp协议) - gorush 通知推送服务器,使用 APNs2 和 GCM 。
- gosd: 用于调度何时向通道发送消息的库。
- guble: 使用通知推送 (
Google Firebase Cloud Messaging, Apple Push Notification services, SMS)、websockets 、REST API的消息服务器。提供了分布式操作和消息持久化特性 - hub: 用于
Go应用程序的消息 / 事件汇聚,使用发布 / 订阅模式,支持像rabbitMQ的使用模式。 - jazz: 一个简单的
RabbitMQ抽象层,用于队列管理以及消息的发布和消费。 - machinery: 异步任务队列,基于分布式消息处理
- mangos: 纯
Go语言实现的Nanomsg ("Scalable Protocols") - melody: 用于处理
websocket会话的简约框架,包括广播和自动ping/pong处理。 - Mercure: 使用
Mercure协议(建立在Server-Sent Events之上)来调度服务器发送的更新的代码库。 - messagebus:
messagebus是一个 Go 简单的异步消息系统,用于事件源、CQRS、DDD等场景 - NATS Go Client: 原生的
oplog/replication系统,用于REST APIs场景 - nsq-event-bus: 针对
NSQ 的topic和channel进行了简单的封装 - oplog: 用于
REST API场景的通用 oplog/copy 系统。 - pubsub: 简单的
pubsub软件包 - rabbus:
amqp交换队列的简易封装。 - rabtap: -
RabbitMQ瑞士军刀cli应用。 - RapidMQ:
RapidMQ是一个轻量级,可靠的本地消息队列管理库 - redisqueue:
redisqueue提供了一个使用Redis流的队列,可以用于生产者和消费者模式。 - rmqconn:
RabbitMQ Reconnection。amqp.Connection和amqp.Dial的go语言封装。允许在连接中断时进行重新连接,然后再强制调用关闭方法。 - sarama: 用于
Apache Kafka的库 - Uniqush-Push: 基于
Redis的统一推服务,用于服务器端向移动客户端推送消息 - zmq4:
ZeroMQ version 4的GO语言接口。也有适用于 version 3 及 version 2 的
Microsoft Office
- unioffice: 用于创建和处理
Office Word (.docx)、Excel (.xlsx)和Powerpoint (.pptx)文档的纯go库。
EXCEL
- excelize: 用于读写
Microsoft Excel™ (XLSX)文件的Golang库 - go-excel: 用于读取类似数据库形式的
excel表格。 - goxlsxwriter:
go语言libxlsxwriter封装, 用于编写XLSX (Microsoft Excel)文件。 - xlsx: 用于在
Go程序中读取最新版 Microsoft Excel 的库 - xlsx: 在
Go程序中快速、安全地读取 / 更新现有Microsoft Excel文件的库。
其他杂项
依赖性注入
- alice:
Golang的依赖注入容器 - container: 功能强大的
IoC容器,具有流畅且易于使用的界面。 - di:
Go编程语言的依赖注入容器。 - dig: 基于反射的
Go依赖注入工具包。 - dingo: 基于
Guice的Go依赖注入工具包。 - fx: 基于
Go的依赖注入应用框架(建立在dig的基础上)。 - gocontainer: 简单的依赖注入容器。
- goioc/di:
Spring启发的依赖注入容器。 - linker: 基于反射的依赖注入和反转的控件库,支持组件生命周期。
- wire:
Golang运行时依赖注入。
项目结构
用于构建项目的非官方模式集。
- cookiecutter-golang: Go 应用程序模板,用于按照生产最佳实践快速启动项目。
- go-sample: 一个带有真实代码的 Go 应用项目布局示例。
- go-todo-backend
: Go Todo Backend示例,使用模块化的项目布局,针对微服务等场景。 - golang-standards/project-layout: -
Go生态系统中常见的历史和新兴项目布局模式集。 - modern-go-application: 应用现代实践的
Go应用程序模板和示例。 - scaffold:
Scaffold生成一个入门的 Go 项目布局。让您专注于业务逻辑的实现。
字符串处理
- go-formatter: 实现大括号 {} 格式字符串的替换字段。
- gobeam/Stringy: 字符串操作库,用于将字符串转换为驼峰、小驼峰等格式
- strutil: 字符串实用工具。
- xstrings: 从其他语言移植过来的字符串函数集合。
暂未分类
这些库被放在这里是因为其他类别似乎都不适合。
- anagent: 简约、可插拔的
Golang evloop/timer处理程序,具有依赖注入功能。 - antch: 一个快速、强大、可扩展的网络爬行和抓取框架。
- archiver: 用于制作和解压
.zip和.tar.gz文件的库和命令。 - autoflags: Go 包,用于从结构域中自动定义命令行标志。
- avgRating: - 基于
Wilson Score Equation计算平均得分和评分。 - banner: 在你的
Go应用程序中添加漂亮的横幅。 - base64Captcha:
Base64captch支持数字、数字、字母、算术、音频和数字来生成字母验证码。 - battery: 跨平台电源信息库
- bitio: 高度优化的比特级读写
- browscap_go: Browser Capabilities Project 的
GO语言库 - captcha: 包
captcha为验证码的生成提供了一个简单易用的 API。 - conv: 包
conv提供了跨Go类型的快速和直观的转换。 - datacounter:
Greaders/writer/HTTP.ResponseWriter计数器 - faker: Go 的随机伪造数据和结构生成器。
- ffmt: 美化数据显示。
- gatus: 自动化的服务健康仪表板。
- ghorg: 快速将整个
org/users仓库克隆到一个目录中 - 支持GitHub、GitLab和Bitbucket。 - go-commons-pool:
Golang的通用对象池。 - go-openapi: 解析和使用
open-api模式的软件包集合。 - go-resiliency:
golang的弹性模式。 - go-unarr:
RAR、TAR、ZIP和7z文件的解压库。 - gofakeit: 用
go编写的随机数据生成器。 - gommit: 分析
git提交消息,确保它们遵循定义的模式。 - gopsutil: 跨平台库,用于检索进程和系统利用率(
CPU、内存、磁盘等)。 - gosh: 提供
Go统计处理程序、结构、测量方法。 - gosms: 你本地的
SMS网关,可以用来发送SMS - gotoprom: 提供
Go统计处理程序、结构、测量方法 - gountries: 一个用来展示国家及其行政区划数据的库
- health: 简单易用、可扩展的服务健康检查库
- healthcheck: 针对
RESTful并发服务健康检查HTTP处理程序。 - hostutils: 用于打包和解压
FQDNs列表的golang库。 - indigo: 使用
Sonyflake和Base58编码的分布式唯一 ID 生成器。 - lk: 简单的 `golang 授权库。
- llvm: - 用于在纯
Go中与LLVM IR交互的库。 - metrics: 用于度量工具和
Prometheus指标的库。 - morse: 用于转换摩尔斯代码的库。
- numa: -
NUMA是一个用 Go 编写的实用程序库。它帮助我们编写一些NUMA-AWARED代码。 - pdfgen: 从
Json请求中生成PDF的HTTP服务。 - persian: 用
go编写的波斯语实用程序。 - sandid: 地球上的每一粒沙子都有自己的
ID。 - shellwords: Golang 库,用于根据
UNIX Bourne shell的单词解析规则来处理字符串。 - shortid: 分布式生成超短的、唯一的、非序列的、URL 友好的 ID。
- shoutrrr: 提供轻松访问各种消息服务的通知库,如
slack, mattermost, gotify和smtp等。 - stateless: 用于创建状态机的库
- stats: 监控
Go内存状态及系统状态,通过UDP进行数据发送 - turtle:
Go的Emojis。 - url-shortener: 一个现代的、强大的、健壮的、支持
mysql的URL短链的微服务。 - VarHandler: 生成模板化的
http输入和输出。 - xdg:
Go中实现的FreeDesktop.org(xdg) 规范。 - xkg: 键盘抓取器
自然语言处理
- detectlanguage: 语言检测 API Go 客户端。支持批量请求、短语或单字语言检测。
- getlang: 快速自然语言检测包。
- go-i18n: , 用于处理本地化文本 的软件包及相关工具
- go-localize: 简单易用的
i18n(国际化和本地化)引擎 - 用于翻译本地化字符串。 - go-mystem:
Yandex.Mystem的CGo接口,Yandex.Mystem是一个俄语词汇形态学分析器 - go-nlp: 在进行自然语言工作时用于处理离散概率分布一些工具,以及其他的一些有用的工具
- go-pinyin: 汉字到汉语拼音转换器。
- go-stem: 波特词干算法的一个实现
- go-unidecode:
Unicode文本音译为ASCII文本 - go2vec: 利用
Go语言读取和处理 word2vec - gojieba: 结巴分词的
Go语言实现的 jieba , 结巴分词是一个用于中文的分词算法 - golibstemmer:
snowball libstemmer库的Go语言接口,包括了对porter 2的支持 - gosentiwordnet:
libstemmer库的 Go 绑定。 - gotokenizer: 基于
Golang的字典和Bigram语言模型的分词器。(现在只支持中文分割) - gounidecode:
Go语言的Unicode直译器 (通常称之为unidecode) - govader: VADER Sentiment Analysis 情感分析的
Go实现 - gse:
Go高效的文本分割;支持英语、中文、日语和其他语言。 - icu:
icu4c C库的CGo接口,包括了检测和转换函数。保证了version 50.1版本的兼容性 - iuliia-go: 以各种可能的方式翻译西里尔语 → 拉丁语。
- kagome: 用纯
Go编写的JP形态分析器。 - libtextcat:
libtextcat C库的CGo接口。保证了version 2.2版本的兼容性 - MMSEGO:
Go语言实现的MMSEG(一个中文分词算法) - MMSEG:
MMSEG的GO实现,是一种中文分词算法。 - nlp: 从字符串中提取值,并用 nlp 填充结构。
- nlp: 支持
LSA(Latent Semantic Analysis)的 Go 自然语言处理库。 - paicehusk:
Go语言实现的Paice/Husk词干算法 - petrovich:
Petrovich是一个将俄语名称转变成给定语言的库。 - porter:
Martin Porter实现的C语言版本的Porter词干算法的Go语言接口。 - porter2: 非常快速的
Porter 2 stemmer. - prose: 文本处理库,支持词语切分、词性标记、命名实体提取等功能
- RAKE.go: 快速自动关键字提取算法 (
Rapid Automatic Keyword Extraction:RAKE) 的Go语言接口 - segment: 用于进行
Unicode文本分割的库,实现了 Unicode Standard Annex #29 中描述的功能 - sentences: 语句标记器:将文字段落转换为语句列表
- shamoji:
shamoji是一个Go语言编写的词过滤软件包 - snowball: Snowball native 分词器的 Go 语言接口,提供了分词提取的功能 .
- stemmer: Go 语言分词器软件包,包括了英语和德语分词器
- textcat: 基于
n-gram的Go语言文本分类软件包,支持utf-8和原始文本 - transliterator: 提供单向字符串翻译,支持特定语言的翻译规则
- whatlanggo:
Go语言的自然语言检测包。支持 84 种语言和 24 种书写 (如拉丁,西里尔等书写系统)。 - when: 英语、俄语的自然语言日期、时间表达解析器。
网络相关库
- arp: 遵循 RFC 826 标准实现了
ARP协议。 - buffstreams: 基于 TCP 的 简单易用的
protocolbuffer数据流 - canopus:
CoAP客户端 / 服务器实现 (RFC 7252) - cidranger:
Go的快速IP、CIDR查找库。 - dhcp6:
dhcp6实现了一个DHCPv6服务器,遵循RFC 3315标准。 - dns: 用于处理
DNS的Go语言库 - ether: 跨平台
Go语言库,用于发送和接收以太帧 - ethernet:
ethernet实现了IEEE 802.3 Ethernet II帧以及IEEE 802.1Q VLAN标签的组装和剥离. - fasthttp:
asthttp是一个快速的HTTP实现,比net/http1的性能快 10 倍 - fortio: 负载测试库和命令行工具,提供先进的
echo服务器和 web 用户界面。允许指定设定每秒钟查询的负载,记录延迟直方图和其他有用的统计数据,并将其绘制成图表。 - ftp:
ftp实现了一个FTP客户端,遵循 RFC 959 标准 - gaio: 在
proactor模式下为Golang提供高性能的异步 io 网络。 - gev: 一个轻量、比标准库更快的基于
Reactor模式的非阻塞TCP网络库,支持自定义协议,可以轻松快速搭建高性能服务器。 - gmqtt:
Gmqtt是一个灵活、高性能的MQTT代理库,它完全实现了MQTT 协议 V3.1.1版本 - gnet:
gnet是用纯 Go 编写 的一个高性能、轻量级、非阻塞、事件驱动的网络框架, - gNxI: 使用
gNMI和gNOI协议的网络管理工具集合。 - go-getter: 一个用于通过 URL 从多种源下载文件或目录的 Go 语言库
- go-powerdns: Golang 的
PowerDNS API绑定。 - go-stun:
Go语言实现的STUN客户端 (参考RFC 3489及RFC 5389标准). - gobgp:
Go语言实现的 BGP - gohooks:
GoHooks使得从Go应用程序中发送和消费安全的web-hooks非常容易。该库的实现受 Spatie 的 Laravel Webhook 客户端和服务器的启发。 - golibwireshark:
Golibwireshark使用libwireshark库来解析pcap文件并且分析数据 - gopacket: 用于报文处理的库
- gopcap:
libpcap的 Go 语言封装 - goshark:
Goshark使用tshark来对IP报文进行解码并创建数据结构用于分析报文 - gosnmp: 用于执行
SNMP操作的库 - gotcp: 用于快速编写
tcp应用的库 - grab: 管理文件下载的
Go语言库 - graval: 试验性的
FTP服务器框架 - HTTPLab:
HTTPLabs让你检查HTTP请求和伪造响应。 - httpproxy:
HTTP代理处理程序和拨号器。 - iplib: 用于处理
IP地址的库 (net.IP, net.IPNet), 灵感来自python ipaddress和ruby ipaddr。 - jazigo:
Jazigo是一个用Go编写的工具,用于检索多个网络设备的配置。 - kcp-go:
KCP- 快速可靠的ARQ协议。 - kcptun: 基于
KCP协议的极其简单和快速的udp隧道。 - lhttp: 强大的
websocket框架,让您更轻松地建立IM服务器。 - linkio: 接口读写速度模拟器
- llb: 非常简单但快速的后端代理服务器。对于快速重定向到预定义域名很有用,无内存分配,响应速度快
- mdns: 简单的
mDNS(组播 DNS) 客户端 / 服务器库 - mqttPaho:
Paho客户端提供了一个MQTT客户端库,用于通过TCP, TLS或WebSockets和MQTT broker建立连接 - NFF-Go: 用于快速开发云和裸机(原
YANFF)的高性能网络功能的框架。 - packet: 通过
TCP和UDP发送数据包。如果需要的话,它可以缓冲消息和热交换连接。 - panoptes-stream: 云端原生的分布式流媒体网络遥测(
gNMI、Juniper JTI和Cisco MDT)库。 - peerdiscovery:
Go库,用于使用UDP组播进行跨平台本地对等发现。 - portproxy: 单的
TCP代理,为不支持CORS的 API 增加了CORS支持。 - publicip:
publicip返回你面向公众的IPv4地址(互联网出口)。 - quic-go: 纯
Go中QUIC协议的实现。 - raw:
raw允许你在设备驱动层读写网络接口的数据 - sftp:
sftp实现了 https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt 中描述的 SSH 文件传输协议 - ssh: 用于创建 SSH 服务器的高级
API(封装了crypto/ssh). - sslb: 超简单的负载均衡库。
- stun:
RFC 5389 STUN协议的Go实现。 - tcp_server: 用于更快地构建
tcp服务器的Go库。 - tspool: 一个使用 w
orker pool来提高性能和保护服务器的 TCP 库。 - utp:
Go uTP微传输协议的实现 - vssh:
Go库,用于通过SSH协议构建网络和服务器自动化。 - water: 一个简单的
TUN/TAP库。 - webrtc:
WebRTC API的纯Go实现。 - winrm: 用于在
Windows机器上远程执行命令的Go WinRM客户端。 - xtcp:
TCP服务器框架,支持同时全双工通信。可以优雅的关闭,并且支持自定义协议
Http Client
- gentleman: - 插件驱动的
HTTP客户端库。 - go-http-client: 支持简单方便地进行
http调用。 - grequests: 著名的请求库的
Go版本。 - heimdall: 具有重试和
hystrix功能的http客户端。 - httpretry: 丰富了默认的
Go HTTP客户端的重试功能。 - pester: 具有重试、回退和并发功能的
Go HTTP客户端调用。 - request:
golang的HTTP客户端。如果你有关于axios或requests的经验,你会喜欢它,该库没有第三方依赖。 - resty: 受
Ruby rest-client的启发,为Go设计的简单HTTP和REST客户端。 - rq:
golang标准客户端的更好的接口封装 - sling: 用于创建和发送
API请求的Go HTTP客户端库。
OpenGL
- gl:
OpenGL的Go语言接口 - glfw:
GLFW 3的Go语言接口 - go-glmatrix: glMatrix 库的 Go 移植。 :
- goxjs/gl:
Go语言跨平台OpenGL接口 (OS X, Linux, Windows, browsers, iOS, Android). - goxjs/glfw:
Go语言跨平台glfw库,用于创建OpenGL上下文并接收事件 - mathgl:
Go语言3D数学库,专注于3D, 受到GLM启发
ORM
- beego orm: 强大的
Go语言orm框架,支持pq/mysql/sqlite3. - ent: 简单而强大的用于数据建模和查询的 ORM。
- go-firestorm:
Google/Firebase Cloud Firestore 的简单ORM。 - go-pg: 专注于
PostgreSQL功能和性能的ORM。 - go-queryset: 100% 类型安全的
ORM, 能够基于GORM进行代码生成和支持MySQL、PostgreSQL、Sqlite3、SQL Server等数据库 - go-sql: 简单的
mysql ORM。 - go-sqlbuilder: 灵活而强大的
SQL字符串构建库,加上一个零配置的ORM。 - go-store: - 简单快速的基于
Redis的键值对存储库 - GORM: 超棒的
Go语言ORM库,对开发者非常友好 - gormt:
Mysql数据库到 Golang 结构体的orm库。 - gorp:
Go的ORM类库。 - grimoire:
Grimoire是golang的数据库访问层和验证层。(支持:MySQL, PostgreSQL和SQLite3)。 - lore: 适用于
Go的简单轻量级的伪 ORM / 伪结构映射环境,。 - marlow: 从项目结构生成
ORM, 以保证编译时的安全。 - pop/soda: 支持
MySQL, PostgreSQL, 以及SQLite. 的数据库迁移、创建、ORM的工具, - QBS: 利用结构体进行标准查询,是一个
Go语言ORM - reform: 基于非空接口和代码生成的优秀的
ORM, - rel:
Golang的现代数据库访问层 - 可测试、可扩展,并支持生成简洁优雅的API。 - SQLBoiler:
ORM生成器。为你的数据库表单生成一个功能全面、快速的ORM - upper.io/db: - 通过使用封装了成熟的数据库驱动的适配器,来使用单一接口与不同的数据源进行交互
- XORM: 简单、强大的
Go语言orm - Zoom: 基于
Redis构建的超快的数据存储于查询引擎。
Go 语言包管理
- go modules:
go module是最新的go语言版本管理工具。go module具有支持包引入记录和其他模块的依赖构建功能。 - dep: Go 语言依赖工具.
- vgo: 用于包和依赖管理的非官方库。
- gigo: 类似
PIP的依赖管理工具。支持私有仓库和哈希 - glide: 轻松管理你的
GO语言包发布者以及发布包。 受到类似Maven, Bundler和Pip这些工具的的启发 - godep:
Go语言依赖工具,Godep可以帮助开发者修复库的依赖关系 - gom:
Go Manager - goop: 简单的依赖管理工具,受到
Bundler的启发 - gop: 通过
GOPATH构建和管理你的Go应用程序。 - gopm:
Go包管理器 - govendor: Go 包管理器。
Go语言vendor工具,兼容标准vendor文件 - gpm:
Go语言包管理工具 - johnny-deps: 使用
Git的最小依赖版本。 - modgv: 将
go mod graph输出转换为Graphviz的DOT语言。 - mvn-golang: 提供自动加载
Golang SDK、依赖管理和在Maven项目基础架构中启动构建环境的方法的插件。 - nut:
Vendor Go的依赖关系。 - VenGO: 创建和管理可导出的隔离的 Go 虚拟环境。
绩效 - jaeger: 分布式跟踪系统。
- pixie: 通过
eBPF对Golang应用程序进行无工具追踪。 - profile:
Go的简单剖析支持包。 - statsviz: 实时可视化你的
Go应用程序运行时的统计数据。 - tracer: 简单、轻量级的代码追踪库。
查询语
- api-fu:
GraphQL的 go 语言实现。 - dasel: 基于命令行的选择器查询和更新数据结构。类似于
jq/yq, 但支持JSON、YAML、TOML和XML。 - gojsonq: 用于查询
JSON数据的Go包 - graphql:
graphql解析器和实用工具 - graphql: 专注于易用性的
GraphQL服务器 - graphql-go: 为
Go语言实现的GraphQL - gws:
Apollos的GraphQL over Websocket客户端和服务器实现。 - jsonql:
JSON查询表达式库 - jsonslice: 具有高级过滤器的
Json路径查询。 - rql:
REST API的资源查询语言。 - rqp:
REST API的查询分析器。在查询中直接支持过滤、验证、AND、OR 操作。 - straf: - 轻松地将
Golang结构转换为GraphQL对象。
资源嵌入
- esc: - 在
Go语言程序中嵌入文件并为其提供HTTP.FileSystem接口 - fileb0x: 用于在
Go语言程序中嵌入文件的工具,专注于可定制化和易用性 - go-embed: 生成用于嵌入资源文件到库或可执行文件的 Go 语言代码
- go-resources: 简洁的
Go语言资源嵌入工具 - go.rice:
Go.rice是一个让你轻松使用html,js,css,图片以及模板这类资源的库 - mule: 将外部资源如图片、电影.. 嵌入到 Go 源代码中,使用
go generate创建单文件二进制文件,专注于简单性。 - packr: 将静态文件嵌入
Go二进制文件的简单方法。 - statics: 将静态资源嵌入到
Go文件中,用于单独二进制编译 + 使用http.FileSystem + symlinks. - statik: 将静态文件嵌入到
Go语言可执行文件中 - templify: 将外部目标文件嵌入到
Go代码中来创建单独的二进制文件 - vfsgen: 生成一个
vfsdata.Go文件,静态实现了一个虚拟文件系统
数据分析与数据科学
- assocentity: 单词到给定实体的平均距离计算包。
- bradleyterry: 成对比较提供一个布拉德利 - 特里模型。
- calendarheatmap: 受
Github contribution的启发,为普通 Go 语言包提供的日历热图。 - chart: Go 的简单图表绘制库,支持多种图形类型。
- dataframe-go: 用于机器学习和统计的数据框类似于
pandas - decimal: 包
decimal实现了任意精度的十进制浮点运算。 - evaler: 简单的浮点算术表达式评估器。
- ewma: 指数加权移动平均数。
- geom:
golang的几何处理库。 - go-dsp: 数字信号处理
- go-gt: 图论算法
- goent: 熵测量的
GO实现 - gohistogram: 数据流的近似直方图
- gonum: 用于
Go编程语言的数值库。它包含了矩阵、统计、优化等方面的库。 - gonum/plot:
Gonum/plot提供了用于创建和绘制图表的API - goraph: 纯
Go语言编写的图论库(数据结构,算法可视化) - gosl: 用于线性代数、FFT、几何学、
NURBS、数值方法、概率、优化、微分方程等的Go科学库。 - GoStats:
GoStats是一个开源的GoLang库,主要用于机器学习领域的数学统计,它涵盖了大部分的统计测量函数。 - graph: 基本图形算法库。
- ode: 普通微分方程 (
ODE) 求解器。支持扩展状态及基于通道的迭代算法终止条件 - orb: 支持剪裁、
GeoJSON和Mapbox Vector Tile的2D几何类型。 - pagerank:
Go语言实现的加权网页排名PageRank算法 - piecewiselinear: 小型线性插值库。
- PiHex: 贝利 - 波尔温 - 普劳夫公式
"Bailey-Borwein-Plouffe")` 算法的实现,用于计算十六进制 π - rootfinding: 用于查找二次函数根的寻根算法库
- stats: 统计库,包含一些
Go语言标准库中漏掉的常用函数 - streamtools: 通用图形化工具,用于处理流数据
- TextRank:
Golang中的TextRank实现,具有可扩展的特性(摘要、加权、短语提取)和多线程(goroutine)支持。 - triangolatte:
2D三角测量库。允许将线条和多边形(基于点)翻译成GPU语言。
安全领域相关库
- acmetool:
ACME (Let's Encrypt)客户端工具,支持自动续期. - acra: 用于保护基于数据库的应用程序的网络加密代理,用于防止数据泄露、
SQL注入等。 - argon2-hashing:
Go的argon2包的封装,与Go的标准库Bcrypt和simple-scrypt包相对应 - argon2pw: 具有恒定时间密码比较功能的
argon2密码散列生成库 - autocert: 自动提供
Let's Encrypt证书并启动TLS服务器。 - BadActor: 受
fail2ban的启发驻留在内存中的应用驱动监控程序, - Cameradar: 用于远程入侵监控摄像头的
RTSP流的工具库。 - certificates: 用于生成
tls证书的工具库。 - firewalld-rest: 用于动态更新
linux服务器上的firewalld规则的定时程序。 - go-generate-password: 密码生成器,可以作为客户端使用或者作为代码库使用。
- go-password-validator: 用于原始加密熵值的密码验证器。
- go-yara: Go Bindings forYARA 恶意软件研究人员(以及其他所有人)的模式匹配瑞士刀”。
- goArgonPass:
Argon2密码散列和验证,旨在与现有的 Python 和 PHP 实现兼容。 - goSecretBoxPassword: 用于安全地散列和加密密码的
go语言包。 - Interpol: 用于模糊和渗透测试的基于规则的数据生成器,。
- lego: 纯
Go语言开发的ACME客户端库及命令行工具 - memguard: 用于处理内存中敏感数据的
Go语言库 - nacl:
NaCL系列API的Go实现 - optimus-go: 使用
Knuth算法进行ID哈希和混淆。 - passlib: 密码哈希库
- secure: 为 Go 提供了一些安全功能
HTTP中间件, - secureio: 基于
XChaCha20-poly1305、ECDH和ED25519的io.ReadWriteCloser的密钥交换 + 认证 + 加密封装器和复用器 - simple-scrypt:
Scrypt库,具有简单、易懂的API, 同时具有内置的自动校准功能 - ssh-vault: 利用
ssh秘钥加解密 。 - sslmgr: 通过对
acme/autocert的高级封装,使SSL证书的使用变得简单。 - themis: 高级加密库,用于解决典型的数据安全任务(安全数据存储、安全消息传递、零知识证明认证), 提供 14 种语言,最适合多平台应用。
序列化
- asn1:
Asn.1 BER 及DER编码库 - bambam: 从
Go中生成Cap'n Proto模式。 - bel: 从 Go 结构 / 接口生成
TypeScript接口。对JSON RPC有用。 - binstruct: 用于将数据映射到结构中的
Golang二进制解码器。 - cbor: 小巧、安全、简单的
CBOR编码和解码库。 - colfer: 用于生成
Colfer二进制格式代码 - csvutil: 高性能的
CSV记录编码和解码器 - elastic: 在动态转换不同类型的库
- fixedwidth: 固定宽度的文本格式(支持 UTF-8)。
- fwencoder: Go 的固定宽度文件解析器(编码和解码库)
- go-capnproto: Go 的
Cap'n Proto编码器和解析器。 - go-codec: 高性能、多功能、规范化编码解码以及
rpc库,用于msgpack, cbor和json, 支持基于运行时的 OR 码生成 - go-lctree: 提供一个
CLI和基元来序列化和反序列化LeetCode二进制树。 LeetCode binary trees: - gogoprotobuf: 用于
Gadgets的 go 协议缓冲区。 - goprotobuf: 以库和协议编译器插件的形式为
Google的协议缓冲区提供 Go 支持。 - jsoniter: 100% 兼容的
"encoding/json "的 高性能程序库。 - mapstructure: 用于将通用
map值解码为本地 Go 结构的 Go 库。 - php_session_decoder: 用于处理
PHP session格式和PHP Serialize/Unserialize函数的 GoLang 库。 - pletter: 为消息中介包装原消息的标准方法。
- structomap: 用于从静态结构中轻松动态地生成映射的库。
服务端应用
- algernon:
HTTP/2 web服务器,内置Lua、Markdown、GCSS和Amber支持。 - Caddy:
Caddy是一个备选的HTTP/2 web服务器,配置简单,使用方便。 - consul:
Consul是一个用于服务发现、监控和配置的工具 - devd: 开发者使用的本地
web服务器 - discovery: 一个用于弹性中层负载均衡和故障转移的注册表。
- dudeldu: 一个简单的
SHOUTcast服务器。 - etcd: 高可用性的键值存储,用于分享配置和服务发现
- Fider:
Fider是一个收集和整理客户反馈的开放平台。 - Flagr:
Flagr是一个开源的功能标志和 A/B 测试服务。 - flipt: 用
Go和Vue.js编写的自带功能标志的解决方案。 - go-proxy-cache: 简单的反向代理与缓存,用
Go编写,使用Redis。 - jackal: 用 Go 编写的
XMPP服务器。 - lets-proxy2: 反向代理,用于处理
https, 在 fly 中使用lets-encrypt发行证书。 - minio: Minio 是一个分布式对象存储服务器
- nginx-prometheus: -
NginxPrometheus exporter。 - nsq: 一个实时的分布式消息平台
- protoxy: 一个将 JSON 请求体转换为协议缓冲区的代理服务器。
- psql-streamer: 从
PostgreSQL到Kafka的数据库事件流。 - riemann-relay: - 负载平衡
Riemann事件和 / 或将其转换为Carbon的中继。 - RoadRunner: 高性能的 PHP 应用服务器,负载均衡器和进程管理器。
- SFTPGo: 功能齐全、高度可配置的
SFTP服务器,可选择支持FTP/S和WebDAV。它可以为本地文件系统和云存储后端服务,如 S3 和谷歌云存储。 - simple-jwt-provider: 简单轻量级的
provider, 它展示了JWTs, 支持登录、密码重置(通过邮件)和用户管理。 - Trickster:
HTTP反向代理缓存和时间序列加速器。
流处理
流式数据处理和响应式编程库
- go-streams:
Go流处理库。 - machine: 内置度量和具有可跟踪的用于编写和生成流式
worker的Go库 - stream:
Go Stream, 像Java 8 Stream一样。支持Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce...等特性
模板引擎
模版渲染和模版生成处理库
- ace: Go 语言版本的 HTML 模板引擎,受到了
Slim和Jade的启发。Ace是对Gold的一种改进。 - amber: Amber 是一个优雅的模板引擎,受到
HAML和Jade的启发 - damsel: 通过 css 选择器实现了
html框架,并可以通过pkg html/template等进行扩展 - ego: 轻量级模板语言,让你可以使用
Go语言来创建模板。模板会被转化为 Go 语言并编译 - extemplate: 围绕
html/template的小型封装器,可以轻松实现基于文件的模板继承 - fasttemplate: 简单而快速的模板引擎。替换模板占位符的速度比 text/template: 快 10 倍
- gofpdf:
PDF文档生成器,高度支持文本、绘图和图像。 - gospin: 语法引擎,对于
A/B、测试文本 / 文章片段和创建更自然的对话非常有用。 - goview:
Goview是一个轻量级的、简约的、习惯性的模板库,基于golang html/template来构建Go web应用。 - hero:
Hero是一个趁手的、快速的、强大的Go语言模板引擎 - jet:
Jet模板引擎 - kasia.go: 使用 go 语言实现的 用于
HTML和其他文本文件的模板系统, - liquid: Go 语言实现的
Shopify Liquid模板. - maroto: 用 Maroto 的方式来创建 PDF。Maroto 的灵感来自于
Bootstrap并使用gofpdf - mustache:
Go语言实现的Mustache模板语言 - pongo2: 类似
Django的模板引擎 - quicktemplate: 快速、强大且易用的模板引擎。将模板转化为
Go语言并进行编译 - raymond: 使用
Go语言实现的完整的handlebars - Razor:
Go语言的Razor视图引擎 - Soy:
go语言实现的谷歌闭包模板 (也就是Soy templates), 参见官方说明文档: - velvet: 使用
Go语言实现的完整的 `handlebars
测试相关
测试库和测试数据集生成库
测试框架
- apitest: 为基于
REST的服务或HTTP处理程序提供简单且可扩展的行为测试库,支持模拟外部http调用和渲染序列图。 - assert: 基础断言库,用于对
Go语言程序进行测试,提供了一些用于自定义断言的代码块 - badio: Go 语言
testing/iotest包的扩展 - baloo: 表达性强、多功能的、端到端的
HTTP API测试工具 - biff:
Bifurcation测试框架,兼容BDD。 - charlatan: 为测试生成虚假接口实现的工具。
- commander: 用于在
windows、linux和osx上测试 `cli 应用程序的工具。 - covergates: 自主的代码覆盖率报告审查和管理服务。
- cupaloy: 用于测试框架的简单快照测试插件。
- dbcleaner: 清空数据库用于测试,受到
database_cleaner的启发 - dsunit: 数据库测试,针对
SQL、 NoSQL、 结构化文件. - embedded-postgres: 作为另一个
Go应用程序或测试的一部分,在Linux、OSX或Windows上本地运行一个真正的 Postgres 数据库 - endly: 声明式端到端功能测试。
- flute:
HTTP客户端测试框架。 - frisby:
REST API测试框架 - ginkgo:
BDD测试框架 - go-carpet: 用于在终端中查看测试覆盖率的工具
- go-cmp: 用于比较测试中的
Go值的软件包。 - go-hit: 用
golang编写的http集成测试框架。 - go-mutesting:
Go语言源代码突变测试(Mutation testing ) - go-testdeep: 扩展了
go测试包的极为灵活的golang深度比较库,。 - go-vcr: 记录并重放
HTTP交互,用于快速的、确定性的、准确的测试 - goblin: 类似
Mocha的测试框架 - goc:
Goc是一个针对Go编程语言的综合覆盖测试系统。 - gocheck: 更加高级的测试框架,用于替换
Gotest. - GoConvey:
BDD风格的测试框架,具有web界面和计时刷新功能 - gocrest: 用于
Go断言的可组合的类似hamcrest的匹配器。 - godog: 类似于
Cucumber或Behat的Go BDD框架。 - gofight: 对
Go语言的路由框架进行API测试 - gogiven: 类似
YATSPEC的Go BDD测试框架。 - gomatch: 类似
Rspec的匹配器 / 断言库。 - gomega: 类似
Rspec的matcher/assertion库 - GoSpec:
BDD风格的测试框架 - gospecify: 支持
BDD语法 。对于任何使用过 rspec 等库的人来说应该非常熟悉 - gosuite: 轻量级测试套,为
Go1.7's Subtests带来了setup/teardown功能 - gotest.tools: 用于增强 Go 测试包并支持常见模式的软件包集合。
- Hamcrest: 用于声明式
Matcher对象的流畅框架,当应用于输入值时,会产生自描述的结果。 - httpexpect: 简洁的、声明式的、易用的端到端 HTTP 及 REST API 测试
- jsonassert: 用于验证 JSON 有效载荷是否被正确序列化的软件包。
- restit: 帮助编写
RESTful API集成测试的Go语言微型框架. - schema: 对请求和响应中使用的 JSON 模式进行快速、简单的表达式匹配。
- stop-and-go: 并发测试助手。
- testcase: 行为驱动开发的直观测试框架。
- testfixtures: 类似
Rails的测试工具,用于测试数据库应用 - Testify: 对标准测试包的扩展
- testmd: 将
markdown 片段转换为可测试的 go 代码。 - testsql: 在测试前从
SQL文件中生成测试数据,并在测试结束后将其清除。 - trial: 快速简单的可扩展断言,不需要引入太多模板。
- Tt: 简单而多彩的测试工具。
- wstest:
Websocket客户端,用于对于websocket HTTP.Handler进行单元测试
- apitest: 为基于
Mock
- counterfeiter: 用于生成自包含
mock对象的工具 - go-localstack: 在
AWS测试中使用localstack的工具。 - go-sqlmock:
Mock SQL, 用于测试数据库交互 - go-txdb: 基于单事物的数据库驱动,主要用于测试目的
- gock: 多功能、易用
HTTP mock - gomock: 给 Go 语言用的
Mock框架 - govcr:
HTTP mock: 离线测试时记录和重放浏览器的动作 - hoverfly:
HTTP(S): proxy,用于记录和模拟REST/SOAP API, 具有可扩展的中间件和易于使用的 CLI。 - httpmock: 轻松模拟来自外部资源的 HTTP 响应。
- minimock:
Mock生成器 - mockhttp:
Go HTTP.ResponseWriter使用的 Mock 对象 - timex: 原生时间包的测试友好的替代品。
- counterfeiter: 用于生成自包含
Fuzzing and delta-debugging/reducing/shrinking.
Selenium 及浏览器控制工具
Fail injection
- failpoint: Golang 中 failpoints 的实现。
文本处理
解析和操作文本的代码库
- 特定文本格式处理
- align: 文本对齐
- allot: 占位符及通配符文本解析
- bbConvert: 将
bbCode转换为HTML - blackfriday:
Markdown解析器 - bluemonday:
HTML清理工具 - codetree: 解析缩进代码(
python、pixy、scarlet等)并返回一个树形结构。 - colly:
go语言版爬虫框架 - commonregex:
Go常用正则表达式的集合。 - dataflowkit:
Web爬虫框架用于将网站转化为结构化数据。 - did: Go 中的
DID(去中心化标识符)解析器和Stringer。 - doi: Go 中的文档对象标识符(
doi)解析器。 - editorconfig-core-go: Go 语言用的
Editorconfig文件解析和操作库 - enca: libenca: 的极简的
cGo接口 - encdec: 通用编码和解码器
- genex: 计算并展开正则表达式为所有匹配的字符串
- github_flavored_markdown:
GitHub Flavored Markdown渲染器(使用 blackfriday), 带有栅栏式代码块高亮,可点击标题锚链接 - go-fixedwidth: 固定宽度的文本格式(带反射的编码器 / 解码器)。
- go-humanize: 将时间、数字和内存大小格式化为人类可读的格式。
- go-nmea: Go 语言的 NMEA 解析库。
- go-runewidth: 用于获取固定宽度的字符或字符串的函数。
- go-slugify: 制作支持多语言的漂亮
slug。 - go-toml:
TOML格式的Go库, - go-vcard: 解析和格式化
vCard。 - go-zero-width: Go 的零宽度字符检测和移除。
- gofeed: 使用
Go语言解析RSS和Atom - gographviz: 用以解析
Graphviz DOT语言 - gommon/bytes: 格式化二进制为字符串
- gonameparts: 将人名解析为几个独立的部分
- goq: 声明式
HTML编组,使用结构标签和jQuery语法 (使用GoQuery). - GoQuery:
GoQuery为Go语言带来了一组类似jQuery的语法和功能 - goregen: 根据正则表达式生成随机字符串
- goribot: 简单的 golang 爬虫框架,3 行代码就可以创建爬虫。
- gotext: Go 语言版本的
GNU gettext工具。 - guesslanguage: 用于确定
unicode文本的自然语言的函数。 - html-to-markdown: 将
HTML转换为Markdown。甚至适用于整个网站,并可通过规则进行扩展。 - htmlquery:
HTML的XPath查询包,让您可以通过XPath表达式从HTML文档中提取数据。 - inject: 一个基于反射的注入器
- ltsv: 适用于 Go 的高性能
LTSV(Labeled Tab Separated Value)阅读器。LTSV (Labeled Tab Separated Value): - mxj: 通过点分路径和通配符来提取值 将
XML编解码为JSON或map[string]interface{}; 目的是用于替代Replaces x2j和j2x包. - pagser:
Pagser是一个简单的、可扩展的、可配置的、基于goquery和struct标签的golang爬虫解析和反序列化工具,能够将html页面映射到 struct 结构体中。 - podcast:
Golang中兼容iTunes和RSS 2.0的播客生成器。 - sdp:
SDP Session Description Protocol, RFC 4566 实现 - sh:
Shell解析器及格式化工具 - slug:
URL友好的slug化工具,支持多种语言 - Slugify:
Go语言静态地址生成器,可以处理字符串 - syndfeed: 适用于
Atom 1.0和RSS 2.0的聚合feed。 - toml:
TOML配置格式的编码解码器
- 文本工具
- gofuckyourself: 敏感词过滤器
- gotabulate: 使用
Go轻松地打印你的表格数据。 - kace: 涵盖常见初始化的普通大小写转换。
- parseargs-go: 能理解引号和反斜杠的字符串参数解析器。
- parth:
URL路径分割解析库。 - radix: 快速字符串排序算法。
- regroup: 使用
struct标记和自动解析将正则表达式命名的组匹配到go结构中。 - Tagify: 从给定的源中产生一组标签。
- textwrap:
Python中textwrap模块的实现。 - TySug: 关于键盘布局的替代建议。
- xj2go: 将
xml 或json转换为go结构。 - xurls: 从文本中提取
URLs。
第三方 API
第三方API 汇总
- airtable: 用于访问
Airtable API的 Go 客户端库。Airtable API: - amazon-product-advertising-api:
Amazon Product Advertising API的 Go 客户端库。 Amazon Product Advertising API: - anaconda:
Twitter 1.1 API的 go 语言客户端 - aws-sdk-go:
AWS提供的官方 go 语言SDK - brewerydb: 用于访问
BreweryDB API的 Go 语言库 - cachet:
Cachet(开源状态页系统)的 Go 客户端库。 - Cachet (open source status page system):
Cachet (open source status page system)的 Go 语言客户端 - circleci: 用于和
with CircleCI's API进行交互的Go语言客户端 - clarifai: 用于和
Clarifai API交互的Go语言库 - codeship-go: 用于与
Codeship的API v2进行交互的Go客户端库。 - coinpaprika-go:
Go客户端库,用于与Coinpaprika的API进行交互。 - discordgo: 用于与
Discord聊天API进行交互的Go语言客户端。 - ethrpc:
Ethereum JSON RPC API的 Go 绑定 - facebook: 支持
Facebook Graph API的库 - fcm: 用于
Firebase Cloud Messaging的 Go 库。 - gads:
Google Adwords非官方 API - gami:
Asterisk Manager Interface的 Go 语言库 - gcm:
Google Cloud Messaging库 - geo-golang: 用于与 Google Maps, MapQuest, Nominatim, OpenCage, Bing , Mapbox , 及 OpenStreetMap 地理编码 / 反编码 APIs 交互的库
- github: 用于访问
GitHub REST API v3的Go库。 - githubql: 用于访问
GitHub GraphQL API v4的Go库。 - go-aws-news: 用于从
AWS获取最新信息的 Go 应用程序和库。 - go-chronos: 用于与 Chronos: Job Scheduler 交互的 Go 库。
- go-hacknews:
HackerNews API的 Go 客户端。 - go-here: 围绕
HERE基于位置的API的 Go 客户端库。 - go-imgur: 用于 imgur 的 Go 客户端库。
- go-jira: 用于 Atlassian JIRA: 的 Go 客户端库。
- go-marathon: 用于与
Mesosphere的Marathon PAAS交互的 Go 库。 - go-myanimelist: 用于访问 MyAnimeList API: 的 Go 客户端库。
- go-postman-collection: Go 模块,用于与 Postman Collections: 进行交互(与 Insomnia 兼容)。
- go-sophos: Go 客户端库,用于零依赖的 Sophos UTM REST API:
- go-sptrans: 用于 SPTrans Olho Vivo API 的 Go 客户端库。
- go-telegraph:
Telegraph发布平台 API 客户端。 - go-trending: 用于访问 Github 的 trending repositories 库和 developers: 开发者信息。
- go-twitch: 用于与 Twitch v3 API 交互的 Go 客户端。
- go-twitter: 用于
Twitter v1.1 APIs的Go客户端库。 - go-unsplash: 用于 Unsplash.com
API的 Go 客户端库。 - go-xkcd: -
xkcd API的Go客户端。 - gogtrends:
Google Trends非官方API。 - golang-tmdb: 电影数据库
API v3的Golang版本api - golyrics: 用于从
Wikia网站获取音乐歌词数据的 Go 库。 - gomalshare:
Go library MalShare API。 malshare.com: - GoMusicBrainz:
Go MusicBrainz WS2客户端库。 - google: 为
Go自动生成的Google API。 - google-analytics 谷歌分析报告 go 语言客户端。
- google-cloud:
Google Cloud APIs Go客户端库。 - google-email-audit-api: :Google G Suite Email Audit API: 的 Go 客户端库。
- google-play-scraper: 从 `Google Play 商店获取数据。
- gopaapi5: Amazon Product Advertising API 5.0: API 5.0 的 Go 客户端库。
- gosip: Go 客户端库
SharePoint API。 - gostorm:
GoStorm在满足实现了Bolts与Storm外壳通信所需的通信协议的基础上实现了 Storm 接口 - hipchat: 这个项目为
Hipchat API实现了一个golang客户端库 - hipchat (xmpp): 通过
XMPP与Hipchat通信的golang包。 - igdb: Internet Game Database API: 的 Go 客户端。
- kanka: Kanka API 的 Go 客户端
- lastpass-go: LastPass: API 的 Go 客户端库。
- libgoffi: 用于本地 libffi 集成的库适配器工具箱。
- Medium: 用于
Medium的OAuth2 API的Golang SDK。 - megos: 用于访问 A
pache Mesos集群的客户端库。 - minio-go:
go语言Minio客户端,用于Amazon S3兼容的云存储 - mixpanel:
Mixpanel是用于追踪事件并发送Mixpanel profile的更新到Mixpanel的库 - patreon-go:
Patreon API. - paypal:
PayPal支付API - playlyfe:
Playlyfe Rest API的Go语言SDK - pushover:
Pushover API的Go语言封装 - rawg-sdk-go: 用于
RAWG视频游戏数据库API的 Go库。RAWG Video Games Database: - rrdaclient: 访问
statdns.com API, 这是通过 HTTP 进行 DNS 查询的RRDA API。 - shopify: 用于接入
Spotify WEB API的Go 语言库 - simples3: 简单的不加修饰的
AWS S3库,使用Go编写的V4 Signing的REST api。 - slack:
Slack API - smite:
Go包,用于包装对Smite游戏API的访问。 - spotify: 访问
Spotify WEB API的Go库。 - steam: 用于与
Steam游戏服务器交互的Go库。 - stripe: 用于访问
Stripe API的Go客户端。 - textbelt:
textbelt.com txt messaging API的go语言客户端 - translate:
Go在线翻译包 - Trello:
Trello API的Go语言封装 - TripAdvisor:
TripAdvisor API 的 Go 语言封装。 - tumblr:
Tumblr v2 API的Go语言封装 - twitter-scraper: 无需认证和限制就能抓取
Twitter前端API。 - uptimerobot:
Uptime Robot v2 API的Go包装器和命令行客户端。 - vl-go: VerifID 身份验证层
API的Go客户端库。 - webhooks:
GitHub和Bitbucket的Webhook接收器 - wit-go: 用于
wit.ai HTTP API的Go客户端。 - ynab:
YNAB API的Go语言封装。 - zooz:
Zooz API的Go语言客户端
工具库
可以提升效率的通用代码库和工具
- apm: 具有
HTTP API的Go语言进程管理工具. - backscanner: 类似于
bufio.Scanner的扫描器,但它以反向顺序读取并返回结果。 - beyond:
Go工具,它将推动你进入AOP世界! - blank: 验证或删除字符串中的空白和空白字符。
- boilr: 用于从模板中快速创建项目的
CLI工具。 - chyle: 使用
git仓库的变更日志生成器,具有多种配置 - circuit: 高效且功能完整的
Hystrix断路器模式的go语言实现 - circuitbreaker:
Go中的断路器。 - clockwork: 使用简单、流畅的语法来调度周期性任务
- cmd: 用于在
osx、windows和linux上执行shell命令的库。 - command: 命令模式,支持线程安全的串行、并行调度
- copy: 用于快速复制不同类型结构的软件包。
- copy-pasta: 通用多工作站剪切板,使用类似
S3的后端作为存储 - countries: 完全执行
ISO-3166-1、ISO-4217、ITU-T E.164、Unicode CLDR和IANA ccTLD标准的库。 - create-go-app: 通过运行一个命令就可以创建一个新的生产就绪项目,包括后端(
Golang)、前端(JavaScript、TypeScript)和部署自动化(Ansible、Docker)的强大的CLI。 - ctop: 用于容器指标,类似于
Top的接口(例如htop)。 - ctxutil: 用于上下文
context的实用函数集合。 - dbt: 从中央可信仓库运行自更新签名二进制文件的框架。
- Death: - 利用信号管理应用程序的关闭
- Deepcopier:
Go的简单结构拷贝库。 - delve:
Go语言调试器 - dlog: 编译时控制的日志,让你的
release包变得更小而不需移除debug调用 - equalizer:
Go的配额管理器和速率限制器。 - ergo: 简化了对运行在不同端口的多个本地服务的管理。
- evaluator: 基于
s-expression动态地评估一个表达式。简单且易于扩展。 - filetype: 用于推断文件类型的小程序包,它可以检查魔法数字签名。
- filler: 使用
"fill "标签来填充结构的小工具。 - filter: 提供
Go数据的过滤、净化和转换。 - fzf: 命令行模糊查找工具
- gaper: 当
Go项目崩溃或某些监视文件发生变化时,构建并重新启动该项目。 - generate: 针对一个路径或环境变量,递归的执行
Go generate, 可以通过正则表达式来进行过滤 - ghokin: 并行化的格式化程序,不需要对
gherkin (cucumber, behat...), 的外部依赖。 - git-time-metric: 简单、无缝、轻量级的
Git时间跟踪。 - go-astitodo: 解析
GO代码中的todo事项。 - go-bind-plugin: 用于包装
golang插件导出的符号的go:generation工具 (仅限 1.8)。 - go-bsdiff: 纯粹的
Go bsdiff和bspatch库以及CLI工具。 - go-convert:
go-convert使您能够将一个值转换为另一种类型。 - go-countries: 轻量级的 ISO-3166 代码查询。
- go-dry:
go语言中DRY (don't repeat yourself)包 - go-funk:
Go语言工具库,提供了很多有用的工具(map, find, contains, filter, chunk, reverse, ...) - go-health: 简化了你在服务中添加健康检查的方式。
- go-httpheader: 用于将结构体编码进
http头的Go语言库 - go-lock:
go-lock是一个实现读写互斥和读写试锁的无饥饿状态的锁库。 - go-problemdetails: 用于处理问题细节的
Go包。 - go-rate:
Go语言版本的限速器 - go-safe:
panic处理安全沙盒。 - go-sitemap-generator:
XML网站地图生成器 - go-trigger:
Go语言全局事件触发器,通过 id 和触发器,在程序的任何地方注册事件 - goback:
Go语言的简单的指数补偿包 - goctx: 获取高性能的上下文值。
- godaemon: 用于编写守护进程的工具
- godropbox:
Dropbox开发的用于编写Go语言服务/应用的库 - gohper: 能够帮助你进行软件开发的工具和模块
- golarm: 告警(支持系统事件)库
- golog: 简单、轻量级的命令后工具,用于对你的计划任务进行跟踪
- gopencils:
Go语言库,能够很容易的使用各种REST APIs. - goplaceholder: 用于生成占位符图片的小
golang库。 - goreadability: 使用
Facebook Open Graph和arc90的可读性提取网页摘要。 - goreleaser: 尽可能快速的发布
Go语言二进制文件 - goreporter: 进行代码静态分析,单元测试,代码检视并生成代码质量报告的工具
- goseaweedfs: 具有几乎全部功能的
SeaweedFS客户端库。 - gostrutils: 字符串操作和转换函数的集合。
- gotenv: 从 .env 或者任何
io.Reader中加载环境变量 - gpath: 用于简化结构体域访问的库
- gubrak: 带有语法糖的
Golang工具库。它类似于lodash, 但适用于golang。 - handy: 许多实用工具和帮助程序,如字符串处理程序 / 格式化程序和验证器。
- hostctl: 用简单的命令管理
/etc/hosts的CLI工具。 - htcat: 并行及流水线的
HTTP GET工具 - hub: 封装了
git命令,提供了额外的功能用于在终端中和Github进行交互 - hystrix-go: 实现 Hystrix 风格的、程序员预定义的
fallback机制(熔断) - immortal: *nix 跨平台 (与操作系统无关的) 监控程序
- intrinsic: 不需要编写任何汇编代码就能使用
x86 SIMD - jsend:
JSend的实现是用Go编写的。 - jump:
Jump通过学习你的习惯来帮助你更快地浏览文件。 - koazee: 受
Lazy评估和函数式编程启发而开发的库,它消除了使用数组的麻烦。 - lets-go:
Go模块,为云原生 REST API 开发提供了常用的实用工具。还包含 AWS 特定的实用程序。 - limiters:
Golang中分布式应用的速率限制器,具有可配置的后端和分布式锁。 - lrserver:
Go的LiveReload服务器。 - mc:
Minio Client提供了与Amazon S3兼容的云存储和文件系统管理工具。 - mergo: Golang 中合并结构和地图的助手。对配置默认值很有用,避免了混乱的 if 语句。
- mimemagic: 纯
go语言实现的超强的 MIME 嗅探库 / 工具。 - mimesniffer:
Go的MIME类型嗅探器。 - mimetype: 基于魔数的
MIME类型检测包。 - minify: 快速压缩
HTML, CSS, JS, XML, JSON以及SVG文件格式 - minquery:
MongoDB / mgo.v2查询,支持高效的分页。 - mmake: 现代
Make工具 - moldova: 基于输入目标生成随机数据的工具
- mole: 用于轻松创建 ssh 隧道的
cli应用程序。 - mongo-go-pagination 官方
mongodb/mongo-go-driver包的Mongodb Pagination, 支持普通查询和聚合管道。 - mssqlx: 数据库客户端库,代理任何主从,主主结构。考虑到轻量级和自动平衡。
- multitick: 多路复用器
- myhttp: 支持超时的
HTTP GET请求的简单API。 - netbug: 轻松地对你的服务进行远程剖析。
- nfdump: 读取
nfdump netflow文件。 - nostromo: 用于构建强大别名的
CLI。 - okrun:
golang error流式处理库 - olaf: 在 Go 中实现的
Twitter Snowflake。 - onecache: 支持多个后端存储的缓存库(
Redis、Memcached、文件系统等)。 - panicparse: 将类似的
goroutines分组,并对堆栈转储进行着色。 - pattern-match: 模式匹配库
- peco: 简单的交互式过滤工具。
- pgo: 为 PHP 社区提供方便的功能。
- pm: 带有
HTTP API的进程(即goroutine)管理器。 - ptr: 提供从基本类型的常量中简化创建指针的函数的包。
- r: 类似于
Python的range()的Go库 - rclient: 可读性良好、灵活、易用的
REST APIs客户端 - realize:
Go语言构建系统,可以监控文件变化并重新加载。运行,构建,监控文件并支持自定义路径 - repeat:
Go实现不同的回退策略,对重试操作和心跳有用。 - request:
Go语言版的HTTP Requests for Humans™. - rerate:
Go的基于Redis的速率计数器和速率限制器。 - rerun: 当源码发生变化时,重新编译和重新运行
go应用程序。 - rest-go: 提供许多有用的方法来使用
rest api的包。 - retry: 最先进的功能机制,用于重复执行动作直到成功。
- retry: 简单但高度可配置的
Go重试包。 - retry:
Go中简单易行的重试机制包。 - retry: 确保工作能够完成的
go语言库。 - retry-go: 为
golang提供简单易行的重试。 - robustly: 弹性地运行函数,捕捉和重启 并自动处理
panic。 - scan: 直接将
golang sql.Rows扫描为structs、slices或primitive类型。 - scany: 用于将数据库中的数据扫描成
Go结构等的库。 - serve: 静态
http服务器。 - shutdown: 用于
os.Signal处理的应用程序关机钩子。 - silk: 读取
silk netflow文件。 - slice: 用于常见
Go分片操作的类型安全函数。 - sliceconv: 原始类型之间的切片转换。
- slicer: 让分片的工作更容易。
- sorty: 快速并发 / 并行排序。
- spinner:
Go语言软件包,提供多种选项,方便在终端中创建加载动画 - sqlx: 为内建的
database/sql软件包提供扩展 - statiks: 快速、零配置、静态的 HTTP 文件服务器。
- Storm: 用于
BoltDB的简单又强大的工具 - structs: 实现简单的函数来操作结构。
- Task: 简单来讲就是
"Make"的替代品 - taskctl: 并发任务运行库。
- tik: 为
Go提供简单方便的定时任务调度包。 - tome:
Tome被设计用来对RESTful API进行简单分页。 - toolbox:
slice, map, multimap, 结构体,函数,数据转换工具、服务路由,宏求值和标记器工具 - ugo:
uGo是一个切片工具箱。 - UNIS:
Go语言字符串处理函数的通用架构 - usql:
usql是一个通用的命令行接口,用于操作sql数据库 - util: 收集了很多有用的函数
- wuzz: 交互式命令行程序,用于进行
HTTP检查 - xferspdy:
Xferspdy提供了二进制比对以及patch补丁功能
UUID
UUID 生成和操作库
- goid: 生成并解析符合
RFC4122标准的V4 UUID。 - gouid: 只需一次分配就能生成加密安全的随机字符串
ID。 - nanoid: 微型而高效的
Go唯一字符串 ID 生成器。 - sno: 内嵌元数据的紧凑、可排序和快速的唯一
ID。 - ulid:
ULID (Universally Unique Lexicographically Sortable Identifier)的Go实现。 - uniq: 使用命令快速、安全的唯一标识符。
- uuid: 用快速或加密质量的随机节点标识符生成、编码和解码
UUIDs v1。 - uuid: 通用唯一标识符
(UUID)的实现。支持UUID的创建和解析。 - uuid: 基于
RFC 4122和DCE 1.1的UUIDs Go包。 - wuid: 极快的唯一数字生成器,比
UUID快 10-135 倍。
校验库
用于校验的库
- checkdigit: 提供数字算法(
Luhn, Verhoeff, Damm)和数字计算(ISBN, EAN, JAN, UPC等)功能的库。 - gody: 针对 ‘Go` 的轻量级结构体验证器。
- govalid: 基于标签的快速结构体验证。
- govalidator: 数据验证及清晰工具,用于字符串,数字,数组切片及结构体
- govalidator: 用简单的规则验证
Golang请求数据。高度受Laravel的请求验证的启发. - jio:
jio是一个类似于 joi 的 json 模式验证器. - ozzo-validation: 支持多种数据类型的验证 (结构体,字符串,键值对,数组切片等等), 具有可配置、可扩展的验证规则,且使用常用代码结构定义,而非结构体标签
- terraform-validator:
Terraform的规范和约定验证器。 - validate: 用于数据验证和过滤的
Go包,支持验证Map、Struct、Request(Form、JSON、url.Values、Uploaded Files) 数据和更多的功能。 - validate: 为
Go语言程序编写验证工具的框架 - validator:
Go结构体及域验证,包括:跨域、跨结构体,Map, 切片和数组
版本控制
版本控制相关库
- gh: 用于
GitHub Webhooks的可编程服务器以及net/HTTP中间件 - git2go:
libgit2的Go语言接口 - go-git: 纯
Go中实现高度可扩展的Git。 - go-vcs: 通过
Go语言来操作和检视VCS代码仓 - hercules: 查看
git repo历史的代码库 - hgo:
HGo是一个Go语言软件包集合,提供了对本地Mercurial仓库的读取能力.
视频
视频和流媒体相关库
- gmf:
FFmpeg av*库的 Go 语言接口. - go-astisub: 使用 Go 语言操作字幕
(.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.). - go-astits: 在 GO 中解析和解调
MPEG传输流(.ts)。 - go-m3u8: 苹果
m3u8播放列表的解析器和生成库。 - go-mpd:
MPEG-DASH清单文件的解析器和生成器库。 - goav: 易用的
FFmpegGo 语言接口 - gst:
GStreamer的 Go 语言接口 - libgosubs:
Go的字幕格式处理库。支持.srt、.ttml和.ass`。 - libvlc-go:
libvlc 2.X/3.X/4.X的 go 语言封装)(VLC媒体播放器使用)。 - m3u8: 用于苹果
HLS的M3U8播放列表解析器和生成器库 - v4l:
Go语言编写的Linux下使用的视频截图库
web 框架
web 框架
- aah: 可扩展、高性能、快速发布的
Go语言web框架 - Aero:
Go的高性能 Web 框架,在Lighthouse评比中拿到最高分 - Air: 理想的
RESTful web框架 - appy: 高效 Web 框架,帮助企业更容易扩展业务。
- Banjo: 简单、快速的
Go web框架。 - Beego: beeGo 是一个开源的、高性能的 Go 语言
web框架 - Buffalo: 为
Go语言带来堪比Rails的高生产效率 - Echo: 高性能、极简的
Go语言web框架 - Fiber: 受
Express.js启发的Web框架,构建在Fasthttp上。 - Fireball: 更加自然的
web框架 - Flamingo: 可插拔的
web 项目框架。包括模块的概念,并提供DI、Configareas、i18n、模板引擎、graphql、可观察性、安全性、事件、路由和反向路由等功能。 - Flamingo Commerce: 提供电子商务功能,使用简洁的架构,如
DDD、端口和适配器,你可以用它来构建灵活的电子商务应用。 - Gearbox: 用 Go 编写的网络框架,专注于高性能和内存优化。
- Gin:
Gin是一个Go语言编写的 web 框架,提供了一组类似martini的API, 且具有更好的性能(40 倍的性能提升)。如果你需要高性能和高生产率,这个框架很适合你 - Ginrpc:
Gin参数自动绑定工具,Gin rpc工具。 - Gizmo: 纽约时报正在使用对微服务工具集
- go-json-rest: 快速、简单的创建
RESTful JSON API. - go-rest:
Go语言REST框架 - goa: 用于开发微服务的框架,基于
Ruby的Praxis的设计 - Golax: 一个非
Sinatra的快速 HTTP 框架,支持Google自定义方法、深度拦截器、递归等。 - Golf: 快速、简单、轻量级的
Go语言微型web框架。具有强大的功能且没有标准库以外的依赖 - Gondola: 用于快速编写高性能网站的框架
- gongular: 快速
Go web框架,支持输入映射/验证以及依赖注入 - goweb: 具有路由、
websockets、日志、中间件、静态文件服务器(可选gzip)和自动 TLS 的 Web 框架 - Goyave: 功能完整的
Web框架,旨在实现简洁的代码和快速开发,具有强大的内置功能。 - hiboot:
hiboot是一个高性能的 web 应用框架,支持自动配置和依赖注入。 - Macaron:
Macaron是一个高效的模块化设计的web框架 - mango: ManGo 是一个模块化
web应用框架,受到Rack和PEP333 的启发 - Microservice: 用于创建微服务的框架,使用
Go语言编写 - neo: 极小且快速的 Go 语言
web框架,具有及其简单的API - patron:
Patron是一个遵循最佳云实践的微服务框架,专注于生产力。 - Resoursea: 用于快速编写基于资源的服务的 REST 框架。
- REST Layer: 在数据库之上构建
REST/GraphQL API的框架,主要是通过配置而不是代码来进行开发 - Revel:
go语言高生产率框架 - rex:
Rex是一个用于进行模块化开发的库,基于Gorilla/mux完全兼容大多数的net/HTTP - rux: 用于构建
golang HTTP应用程序的简单、快速的web框架。 - tango: 微型的、支持插件的
web框架 - tigertonic: 受到 Dropwizard 启发,用于构建
JSON web服务的Go语言框架, - uAdmin: 受
Django启发的 Golangweb框架,。 - utron: 轻量级的
go语言MVC框架 - vox:
Golang网络框架,灵感来自Koa。 - WebGo: 构建
Web应用的微服务框架;具有处理程序链、中间件和上下文注入功能。具有标准库兼容的HTTP处理程序(即http.HandlerFunc)。 - YARF: 微服务框架,用于快速、简单地构建
REST APIs以及web服务
中间件
中间件
- client-timing: 在消息头部添加服务器定时信息的 HTTP 客户端。
- CORS: 非常方便地向你的
api中添加CORS功能 - formjson: 以标准的表单
POST方式处理JSON输入。 - go-fault:
Go的错误注入中间件。 - go-server-timing: 向头信息中 添加 / 解析服务器计时信息。
- Limiter: 超级简单的限速中间件
- ln-paywall: Go 中间件,用于通过
Lightning Network (Bitcoin)请求将API货币化。 - Tollbooth:
HTTP请求限速中间件 - XFF: 理
X-Forwarded-For头的中间件
创建 http 中间件的代码库
- alice: 创建链式中间件的库
- catena:
HTTP.Handler封装器 (和chain具有相同的API). - chain: 可以带数据的
Handler链式封装器 (net/context-based "middleware"). - go-wrap: 小型中间件库,用于
net/HTTP. - gores: 用于处理
HTML, JSON, XML等。对于RESTful APIs很有用。 - interpose: 极简的
net/HTTP中间件 - mediary: 为
http.Client添加拦截器,允许转储 / 重构 / 跟踪 /… 请求 / 响应。 - muxchain: 用于
net/HTTP的轻量级中间件 - negroni: 符合语言习惯的
HTTP中间件库 - render: 用于轻松渲染
JSON, XML, 及HTML模板响应的库 - renderer: 简单、轻量级和更快的响应
JSON、JSONP、XML、YAML、HTML、File的 Go 渲染包。 - rye: 小型 Go 语言中间件库,支持
JWT, CORS, Statsd, 及Go 1.7 context - stats:
Go语言中间件,用于存储web应用的多种信息
路由
- alien: 轻量级、超快速的
HTTP路由, - bellt: 一个简单的
Go HTTP路由器。 - Bone: 轻量、快速的
HTTP多路复用器 - Bxog: 为
go语言编写的简单、快速的HTTP路由。它能够根据接收到的参数创建URL, 并且能够解析多种不同复杂度、长度和嵌套的路由。 - chi: 基于
net/context的小巧、快速、具有丰富表达力的HTTP路由. - fasthttprouter: 从
httprouter分叉出来的高性能路由器,也是第一个适合fasthttp的路由器。 - FastRouter: 从
httprouterfork 出来的高性能路由,是第一个适配fasthttp的路由 - gocraft/web:
Mux及中间件包 - Goji:
Goji是一个极简的、灵活的HTTP请求数据分选器,支持net/context. - goroute: 简单而强大的
HTTP请求复用器。 - GoRouter:
server/API微服务框架,具有HTTP请求路由模块router模块,多路复用模块并且提供了支持net/context的中间件 : - gowww/router: 超快的 HTTP 路由,完全兼容
net/HTTP.Handler接口. - httprouter: 高性能路由,使用这个库和标准 http 处理工具可以构建一个非常高性能大 web 框架
- httptreemux: 快速,灵活,树状结构的
HTTP路由。受到了httprouter的启发 - lars: 轻量级、快速、可扩展、零分配的
HTTP路由,用于创建定制化的框架 - mux: 强大的
URL路由和分发库 - ozzo-routing: 极快的
Go (golang) HTTP路由器,支持正则表达式路由匹配。完全支持构建RESTful API。 - pure: 是一个轻量级 http 路由,严格参照
net/HTTP标准实现 - Siesta: 具有可组合性的框架,用于编写中间件和
handlers - vestigo: 用于构建
go语言web应用,高性能、符合HTTP标准的URL路由, - violetear:
Go http路由库 - xmux: 高性能 muxer, 基于
httprouter, 支持net/context - xujiajun/gorouter: 简单快速的
go HTTP路由器。
WebAssembly
- dom:
DOM库。 - go-canvas: 使用
HTML5 Canvas的库,所有的绘图逻辑都在go代码中执行。 - tinygo: 基于
LLVM, 适用于微型场景的Go编译器。包括微控制器、WebAssembly和命令行工具。 - vert:
Go和JS值之间的互操作。 - wasmbrowsertest: 在浏览器中运行
Go WASM测试。 - webapi: 从
WebIDL生成DOM和HTML的封装。
Windows
- d3d9:
Direct3D9的Go语言封装 - go-ole: 为
Go语言实现的Win32 OLE - gosddl: 从
SDDL-string到用户友好的 JSON 的转换器。SDDL由四个部分组成。Owner、Primary Group、DACL、SACL。
XML
- XML-Comp: 命令行
XML比较工具,可以生成关于目录、文件和标签对差异信息 - xml2map:
Golang编写的XML到MAP的转换器。 - xmlwriter: 基于
libxml2的xmlwriter模块的xml生成器 api. - xpath:
XPath库 - xquery:
XQuery使你可以使用XPath表达式从HTML/XML文档中抽取数据和求值, - zek: 从
XML生成一个Go结构体。
相关工具
go相关工具和插件
代码分析
- apicompat: 检测
go语言项目最近的变化,用于监测不能向后兼容的代码修改 - dupl: 用于检测重复代码的工具
- errcheck:
Errcheck是一个用于检测 go 语言程序中存在未处理错误的程序 - gcvis: 实时地将
Go语言垃圾回收进行可视化 - go-checkstyle:
checkstyle是一个类似java checkstyle的 代码风格检查工具,这个工具受到java checkstyle和Golint的启发 - go-cleanarch:
Go-cleanarch用于检查代码是否符合简洁架构的相关法则,比如依赖法则以及你的 Go 语言项目中各个库的交互情况 - go-critic: 源代码检查器,它带来了目前其他检查器没有实现的检查。
- go-mod-outdated: 一种查找
Go项目中过时的依赖关系的简单方法。 - go-outdated: 用于显示过时的库的命令行工具
- goast-viewer: 基于
Web的Golang AST可视化工具. - GoCover.io:
GoCover.io可以查看任何 go 语言软件包的代码覆盖率 - goimports: 用于自动修复,添加,删除你的 Go 语言项目的 import
- golines: 自动缩短
Go代码中长行的格式化器。 - GoLint: 针对 Go 语言源码的
lint工具 - Golint online: 使用
golint对GitHub, Bitbucket以及Google Project Hosting上面的Go语言源文件进行静态分析 - GoPlantUML: 生成文本
plantUML图的库和CLI, 包含结构和接口的信息以及它们之间的关系。 - goreturns: 添加零值
return语句以符合函数返回值类型 - gosimple: 针对 Go 语言的
lint工具,专注于简化代码 - gostatus: 命令行工具,查看当前
Go语言软件包仓库的状态 - lint: 运行
linters作为 Go 测试的一部分。 - php-parser:
Go编写的PHP解析器。 - staticcheck: -
staticcheck在Go vet阶段中执行大量的静态分析检查,类似ReSharper for C#这样的工具。 - tarp:
tarp可以在Go源代码中找到无需直接单元测试的函数和方法 - tickgit: 用于显示代码注释
TODO(任何语言)的 CLI 和 go 包,并应用git blam来识别作者 - unconvert: 从 go 语言代码中移除不必要的类型转换
- unused:
unused会检查 Go 语言代码中没有用到的常量,变量,函数和类型 - validate: 根据结构体
tag自动验证结构体字段
编辑器插件
- Go plugin for JetBrains IDEs:
JetBrains IDEs使用的Go语言插件 - go-language-server: 用于将
VSCode go扩展变为支持语言服务器协议的 GO 代码封装库 - go-mode:
GNU/Emacs的Go语言模式 - go-plus: 供
Atom使用的自动补全、格式化、语法检查、lint及Vetting的软件包 - gocode:
go语言自动补全 - goimports-reviser: 用于导入的格式化工具。
- goprofiling: 这个扩展为
VS Code增加了对Go语言的基准分析支持。 - GoSublime: SublimeText 2 使用的 Go 语言插件,支持代码补全以及一些类似
IDE的特性 - gounit-vim:
Vim插件,用于根据函数或方法的签名生成Go测试。 - theia-go-extension: 为
Theia IDE提供Go语言支持。 - vim-compiler-go:
Vim插件,在保存时高亮语法错误 - vim-go:
Vim使用的Go语言开发插件 - vscode-go:
Visual Studio Code (VS Code): 使用的一个扩展,为Go语言提供了支持 - Watch: 当文件变动时,在
acme窗口中执行命令
Go 代码生成工具
- generic: 针对
Go的灵活数据类型。 - genny: 为
Go提供优雅的泛型。 - gocontracts: 通过同步代码和文档,将按合约设计引入
Go。 - gonerics:
Go泛型。 - gotests: 根据源代码生成
Go测试代码。 - gounit: 使用你自己的模板生成
Go测试代码。 - hasgo: 为
slices生成Haskell的启发函数。 - re2dfa: 将正则表达式转换为有限状态机并输出
Go源代码。 - TOML-to-Go: 在浏览器中将
TOML转成Go类型。 - xgen:
XSD (XML Schema Definition)解析器,能够生成Go/C/Java/Rust/Typescript代码
Go 工具
- colorgo: 对 Go 命令进行了封装,用于为 Go build 的输出结果添加颜色
- depth: 通过分析导入的库,将某个包的依赖关系用树状结构进行显示
- gb: 针对 Go 语言的项目的构建工具,
- generator-go-lang: 生成 Yeoman: 新项目的生成器 。
- gilbert: Go 项目的构建系统和任务运行器。
- go-callvis: 使用
dot语言将你的 Go 语言程序函数调用关系可视化 - go-james: Go 项目骨架创建服务,无需手动设置即可构建和测试你的项目。
- go-pkg-complete:
Bash代码补全,用于Go和wGo. - go-swagger: 为 Go 语言实现的
Swagger 2.0. - godbg:
Rusts dbg!宏的实现,用于在开发过程中进行快速和简单的调试。 - gomodrun: 用于执行和缓存包含在
go.mod文件中的二进制文件的Go工具。 - gothanks:
GoThanks会自动为你的go.mod github依赖项加星。 - igo:
igo到go的转换器(Go 语言的新语言特性!)。 - OctoLinker: - 使用
github的浏览器插件OctoLinker高效浏览Go语言文件 - richgo: 用文本装饰丰富
go代码测试输出。 - rts:
RTS(是response to struct的缩写)用于根据服务器的响应生成Go语言结构体 - typex: 检查 Go 类型和它们的转换依赖关系,或者将结果导出为
TypeScript 值对象(或类型)声明。
软件包
Go语言开发的软件工具
devops 工具
- aptly:
aptly是一个Debian库管理工具 - aurora: 跨平台、基于 web 的
Beanstalkd队列服务器控制台 - awsenv: 加载
Amazon (AWS)环境变量作为profile文件 - Blast: 一个简单的 API 负载测试和批量作业管理的工具。
- bombardier: 快速的、跨平台的
HTTP基准工具. - bosun: 基于时间序列的告警框架
- cassowary: 用 Go 编写的现代跨平台
HTTP负载测试工具。 - DepCharge: 帮助管理大型项目中众多依赖关系的命令。
- Dockerfile-Generator: 包含
go代码库和可执行文件,其可以利用各种输入管道信息生成有效的 Dockerfiles。 - dogo: 监控源文件中的变化并自动编译和执行
- drone-jenkins: 可以通过二进制文件、
docker或者Drone CI来触发下游Jenkins任务, - drone-scp: 通过
SSH拷贝文件及可执行程序,可以通过二进制文件、docker或者Drone CI来使用 - Dropship: 通过
cdn部署代码的工具 - easyssh-proxy: 一个用于通过 ssh 远程执行命令以及可通过
ProxyCommand来进行 SCP 下载 - fac: 用于修复 git 合并冲突的命令行用户界面。
- gaia: 利用任何编程语言都可以构建强大的管道的库。
- Gitea: 社区驱动的
Gogs的fork库 - gitea-github-migrator: 将所有的 `GitHub 仓库、问题、里程碑和标签迁移到 Gitea 实例中。
- go-furnace: 用 Go 编写的托管解决方案。在
AWS、GCP或DigitalOcean上轻松部署你的应用程序。 - go-selfupdate: 让你的
Go语言程序可以自我更新 - gobrew:
Gobrew让你可以在不同版本的Go语言之间轻松切换 - godbg: 基于
Web的前端gdb应用程序 - Gogs: 自我托管的
Git服务 - gonative: 为
Go语言创建可以在多平台进行交叉编译的工具,使用CGo-enabled标准库 - govvv: 对
Go build进行了封装,用于轻松的向 Go 语言二进制文件中添加版本信息 - gox: 非常简单的
Go语言交叉编译工具 - goxc:
Go语言构建工具,专注于交叉编译和打包 - grapes: 一款轻量级工具,用于通过
ssh发送命令 - GVM:
GVM提供了用于管理Go语言版本的接口 - Hey:
Hey是一个微型程序,用于向web应用发送负载 - jcli:
Jenkins CLI允许你以一种简单的方式管理你的Jenkins。 - kala: 极简、现代的、高效的任务调度
- kcli: 用于检查
kafka主题 / 分区 / 消息的命令行工具。 - kubernetes: 来自
Google的容器集群管理器 - lstags: 在不同的注册表中同步
Docker镜像的工具和API。 - lwc:
UNIX wc命令的实时更新版本。 - manssh:
manssh是一个命令行工具,用于轻松管理 ssh 别名配置。 - Moby: 为容器生态系统创建的一个合作项目,用于构建基于容器的系统
- Mora: REST 服务器,用于获取
MonGoDB文件和元数据 - ostent: 收集并显示系统数据,可以作
Graphite和/或InfluxDB的中间件 - Packer:
Packer通过单一的配置文件,为不同的平台创建独立镜像 - Pewpew: 灵活的
HTTP命令行压力测试工具 - Pomerium:
Pomerium是一个身份感知的访问代理。 - Rodent:
Rodent帮助你管理Go语言版本、项目、和追踪依赖 - s3-proxy:
S3代理,具有GET、PUT和DELETE方法和认证(OpenID Connect和Basic Auth)。 - s3gof3r: 为了从
Amazon S3中高速存取大型对象而特别优化的库 - s5cmd: 快速的
S3和本地文件系统执行工具。 - Scaleway-cli: 通过命令行来管理 裸金属服务器 (和使用
Docker一样容易)。 - script: 在 Go 中轻松编写类似
shell的脚本,用于DevOps和系统管理任务。 - sg: 对一组
HTTP钩子(如ab)进行基准测试,可以使用每次调用之间的响应代码和数据,根据其之前的响应来确定特定的服务器压力。 - skm: SKM 是一个简单而强大的
SSH密钥管理器,它可以帮助您轻松管理您的多个SSH密钥。 - StatusOK: 监控你的网站和
REST APIs。如果你的服务器挂了或是响应时间超过预期,则会通过Slack,E-mail来通知你 - terraform-provider-openapi:
Terraform provider插件,可以在运行时根据包含API定义的OpenAPI文档(以前称为swagger文件)动态配置自己。 - traefik: 能对接多个后端的反向代理和负载均衡器。
- trubka:
CLI工具,用于管理Apache Kafka集群并排除其故障,能够向Kafka发布 / 消费协议缓冲区和纯文本事件。 - uTask: 自动化引擎,可对
yaml中声明的业务流程进行建模和执行。 - Vegeta:
HTTP 加载测试工具和代码库 - webhook: 允许用户创建
HTTP钩子,并在服务器上执行命令 - Wide: 基于
Web的IDE, 为使用Go语言的团队设计 - winrm-cli: 命令行工具,可以远程在
windows机器上执行命令
其他软件库和软件包
- Better Go Playground: 具有语法高亮、代码补全等功能的
playground - borg: 基于终端的搜索引擎,用于搜索
bash代码片段 - boxed: 基于
Dropbox的博客引擎 - Cherry:
Go语言实现的一个微型网络聊天服务器 - Circuit:
Circuit是一个可编程的PaaS以及IaaS, 用于管理、发现以及编排各种云端应用的服务及主机 - Comcast: 模拟网络波动情况下的网络数据连接
- confd: 使用
etcd或consul来管理本地应用的配置文件 - croc: 轻松安全地将文件或文件夹从一台计算机发送到另一台计算机。
- Docker: 一个为开发者和系统管理员提供的针对分布式应用的开源平台
- Documize: 维基软件,可以使用
SaaS工具提供的数据 - dp: 与区块链进行数据交换的 SDK, 开发者可以轻松进行
DAPP的开发。 - drive: 命令行版本的
Google Drive客户端。 - Duplicacy: 跨平台网络和云备份工具
- Gebug: - 一个通过启用
Debugger和热加载功能,让Docker容器化后的Go应用调试变得超级简单。 - gfile: 无需任何第三方工具通过
WebRTC在两台电脑之间安全传输文件。 - Go Package Store: 一个可以显示你的
GoPATH路径下Go软件包的应用 - go-peerflix: 视频流下载客户端。
- GoBoy: 用
Go编写的任天堂游戏机颜色模拟器。 - gocc:
Go语言编写的Go语言编译器工具集 - GoDocTooltip: 用来显示
go语言文档的chrome浏览器插件 - GoLand: 跨平台、全功能
Go语言集成开发环境 - Gor: Http 流量复制工具,用于将生产环境的流量在开发环境进行重放
- Guora: 一个用
Go编写的类似于Quora的问答网络应用。 - hugo: - 快速、现代的静态
web引擎 - ide: 为
Go语言设计可以在浏览器的IDE。 - ipe:
Go语言编写的开源Pusher服务器,兼容Pusher客户端。 - joincap: 用于合并多个
pcap文件的命令行工具。 - Juju: 服务部署及编排工具,,支持
EC2,Azure,Openstack,MAAS等等 - Leaps: 结对编程服务,使用操作变换来避免冲突。
- lgo: 使用
Jupyter进行交互式编程。它支持代码补全、代码检查,100% 兼容Go。 - limetext:
Lime Text是一个强大又优雅的编辑器,主要使用Go语言开发,意在成为Sublime Text的继承者。 - LiteIDE:
LiteIDE是一个简单、开源、跨平台的Go语言IDE - mockingjay: 伪
HTTP服务器,通过单一配置文件构造访问请求。同时你还可以让服务器提升负载,以进行更加符合现实情况的性能测试 - myLG:
Go语言编写的命令行网络诊断工具 - naclpipe: 简单的基于
NaCL EC25519的加密管道工具 - nes:
Go语言编写的任天堂(NES)模拟器 - orange-cat:
Go语言编写的Markdown预览工具 - Orbit: 运行命令和从模板生成文件的简单工具。
- peg:
Peg(Parsing Expression Grammar)是一个Packrat parser generator的实现 - restic: 解耦备份程序
- scc: 一个非常快速准确的代码计数器,具有复杂度计算和
COCOMO估计功能。 - Seaweed File System: 快速、简单、可扩展的分布式文件系统,具有
O(1)的磁盘查找效率 - shell2http: 通过 HTTP 服务器执行
shell命令行 (用于原型验证或远程控制)。 - snap: 强大的遥测框架
- Snitch: 当通过
Tsuru部署应用程序时,可以简单快速的通知团队的工具 - Stack Up:
Stack Up是一个超级简单的开发工具,就好比是服务器网络的make工具 - syncthing: 开源、去中心化的文件同步工具和协议
- tcpprobe: -
TCP工具,用于网络性能和路径监控,包括套接字统计等。 - term-quiz: 终端测试库。
- toxiproxy: 用于自动化测试中模拟网络和系统状态的代理服务。
- tsuru: 可扩展的、开源的
SAAS软件 - vaku: 为
Vault中基于文件夹的功能如复制、移动和搜索提供CLI和API。 - vFlow: 高性能、可扩展、可靠的
IPFIX,sFlow和Netflow集合. - wellington:
Sass项目管理工具,通过支持一些功能(例如 Compass)扩展了这门语言 - woke: 检测源代码中的排他性代码段。
Go 资源列表
https://blog.lllllan.cn/go/awesome/