搜集平时看到的go语言的开源库,方便以后开发使用。

Terminal

tcell github

termbox-go github

pixterm github 在终端上绘图

TUI

bubbletea github

GUI

giu github

gowid github

gocui github

termui github

termdash github

fyne-io github

color github 直接用color输出,替代fmt

aurora github 嵌入到fmt中只给指定的内容改色

mpb github

echelon github

bar github

aec github

spinner github

go-prompt github

survey github

climenu github

uitable github

render the data

NAME          BIRTHDAY          BIO
Ada Lovelace  December 10, 1815 Ada was a British mathematician and writer, chi...
Alan Turing   June 23, 1912     Alan was a British pioneering computer scientis...

tablewriter github

    DATE   |       DESCRIPTION        |  CV2  | AMOUNT
-----------+--------------------------+-------+----------
  1/1/2014 | Domain name              |  2233 | $10.98
  1/1/2014 | January Hosting          |  2233 | $54.95
  1/4/2014 | February Hosting         |  2233 | $51.00
  1/4/2014 | February Extra Bandwidth |  2233 | $30.00
-----------+--------------------------+-------+----------
                                        TOTAL | $146 93
                                      --------+----------

系统架构

系统架构图

go-diagrams github 用代码绘制系统架构图。内含各云服务商的产品图标。

web

gin github

ginprom github Gin Prometheus metrics exporter

tollbooth github rate-limit HTTP requests

身份验证系统

authboss github

JWT

jwt github

jwt-go github

微服务

go-zero github

go-kit 文档 github (truss 利用protoc自动生成go-kit代码)

go-micro 文档 github

go-chassis 文档 github

graceful github master worker模式启动http服务,无缝热重启和更新。

微服务调试

squash github

OAuth2

ory/hydra github

ory/kratos github

go-oauth2-server github

go-oauth2 github

验证码

captcha github

随机数 random

weightedrand github 能加权的随机数

2D绘图(验证码)

gg github 生成各种图像,可以生成验证码

emoji 颜文字

gmoji github

HTTP和REST请求的客户端

resty github

got github 下载大文件

sling github 方便的发送API请求

gRPC调试工具

grpcui github

JSON解析

easyjson github 最快的json装卸包

json-iterator github doc

jsonparser github 无需定义schema,直接传递 keyPath获取指定类型的值

API 网关

goku-api-gateway github 悟空API网关 开源版

sentinel-golang github  介绍 阿里开源的微服务工具 API限流熔断器

Tracing 跟踪

opencensus-go github

jaeger github CNCF项目分布式跟踪系统

Workflow 分布式工作流引擎

Argo github doc

权限管理

casbin github ACL, RBAC, ABAC in Golang

permissions2 github login states and permissions supports gin

rbac github 简单轻量的RBAC控制

UUID

wuid github

uuid github 支持 version1、version2、version3、version4、version5

分布式全局唯一ID

snowflake github

go-snowflake github doc

通知管理

goalert github

Session

session github

ORM

gorm github doc

xorm github

类型转换

cast github

validator

govalidator github

package main

import (
	"encoding/json"
	"fmt"
	"net/http"

	"github.com/thedevsaddam/govalidator"
)

func handler(w http.ResponseWriter, r *http.Request) {
	rules := govalidator.MapData{
		"username": []string{"required", "between:3,8"},
		"email":    []string{"required", "min:4", "max:20", "email"},
		"web":      []string{"url"},
		"phone":    []string{"digits:11"},
		"agree":    []string{"bool"},
		"dob":      []string{"date"},
	}

	messages := govalidator.MapData{
		"username": []string{"required:আপনাকে অবশ্যই ইউজারনেম দিতে হবে", "between:ইউজারনেম অবশ্যই ৩-৮ অক্ষর হতে হবে"},
		"phone":    []string{"digits:ফোন নাম্বার অবশ্যই ১১ নম্বারের হতে হবে"},
	}

	opts := govalidator.Options{
		Request:         r,        // request object
		Rules:           rules,    // rules map
		Messages:        messages, // custom message map (Optional)
		RequiredDefault: true,     // all the field to be pass the rules
	}
	v := govalidator.New(opts)
	e := v.Validate()
	err := map[string]interface{}{"validationError": e}
	w.Header().Set("Content-type", "application/json")
	json.NewEncoder(w).Encode(err)
}

func main() {
	http.HandleFunc("/", handler)
	fmt.Println("Listening on port: 9000")
	http.ListenAndServe(":9000", nil)
}

govalidator github

func Abs(value float64) float64
func BlackList(str, chars string) string
func ByteLength(str string, params ...string) bool
func CamelCaseToUnderscore(str string) string
func Contains(str, substring string) bool
func Count(array []interface{}, iterator ConditionIterator) int
func Each(array []interface{}, iterator Iterator)
func ErrorByField(e error, field string) string
func ErrorsByField(e error) map[string]string
func Filter(array []interface{}, iterator ConditionIterator) []interface{}
func Find(array []interface{}, iterator ConditionIterator) interface{}
func GetLine(s string, index int) (string, error)
func GetLines(s string) []string
func InRange(value, left, right float64) bool
func IsASCII(str string) bool
func IsAlpha(str string) bool
func IsAlphanumeric(str string) bool
func IsBase64(str string) bool
func IsByteLength(str string, min, max int) bool
func IsCIDR(str string) bool
func IsCreditCard(str string) bool
func IsDNSName(str string) bool
func IsDataURI(str string) bool
func IsDialString(str string) bool
func IsDivisibleBy(str, num string) bool
func IsEmail(str string) bool
func IsFilePath(str string) (bool, int)
func IsFloat(str string) bool
func IsFullWidth(str string) bool
func IsHalfWidth(str string) bool
func IsHexadecimal(str string) bool
func IsHexcolor(str string) bool
func IsHost(str string) bool
func IsIP(str string) bool
func IsIPv4(str string) bool
func IsIPv6(str string) bool
func IsISBN(str string, version int) bool
func IsISBN10(str string) bool
func IsISBN13(str string) bool
func IsISO3166Alpha2(str string) bool
func IsISO3166Alpha3(str string) bool
func IsISO693Alpha2(str string) bool
func IsISO693Alpha3b(str string) bool
func IsISO4217(str string) bool
func IsIn(str string, params ...string) bool
func IsInt(str string) bool
func IsJSON(str string) bool
func IsLatitude(str string) bool
func IsLongitude(str string) bool
func IsLowerCase(str string) bool
func IsMAC(str string) bool
func IsMongoID(str string) bool
func IsMultibyte(str string) bool
func IsNatural(value float64) bool
func IsNegative(value float64) bool
func IsNonNegative(value float64) bool
func IsNonPositive(value float64) bool
func IsNull(str string) bool
func IsNumeric(str string) bool
func IsPort(str string) bool
func IsPositive(value float64) bool
func IsPrintableASCII(str string) bool
func IsRFC3339(str string) bool
func IsRFC3339WithoutZone(str string) bool
func IsRGBcolor(str string) bool
func IsRequestURI(rawurl string) bool
func IsRequestURL(rawurl string) bool
func IsSSN(str string) bool
func IsSemver(str string) bool
func IsTime(str string, format string) bool
func IsURL(str string) bool
func IsUTFDigit(str string) bool
func IsUTFLetter(str string) bool
func IsUTFLetterNumeric(str string) bool
func IsUTFNumeric(str string) bool
func IsUUID(str string) bool
func IsUUIDv3(str string) bool
func IsUUIDv4(str string) bool
func IsUUIDv5(str string) bool
func IsUpperCase(str string) bool
func IsVariableWidth(str string) bool
func IsWhole(value float64) bool
func LeftTrim(str, chars string) string
func Map(array []interface{}, iterator ResultIterator) []interface{}
func Matches(str, pattern string) bool
func NormalizeEmail(str string) (string, error)
func PadBoth(str string, padStr string, padLen int) string
func PadLeft(str string, padStr string, padLen int) string
func PadRight(str string, padStr string, padLen int) string
func Range(str string, params ...string) bool
func RemoveTags(s string) string
func ReplacePattern(str, pattern, replace string) string
func Reverse(s string) string
func RightTrim(str, chars string) string
func RuneLength(str string, params ...string) bool
func SafeFileName(str string) string
func SetFieldsRequiredByDefault(value bool)
func Sign(value float64) float64
func StringLength(str string, params ...string) bool
func StringMatches(s string, params ...string) bool
func StripLow(str string, keepNewLines bool) string
func ToBoolean(str string) (bool, error)
func ToFloat(str string) (float64, error)
func ToInt(str string) (int64, error)
func ToJSON(obj interface{}) (string, error)
func ToString(obj interface{}) string
func Trim(str, chars string) string
func Truncate(str string, length int, ending string) string
func UnderscoreToCamelCase(s string) string
func ValidateStruct(s interface{}) (bool, error)
func WhiteList(str, chars string) string
type ConditionIterator
type CustomTypeValidator
type Error
func (e Error) Error() string
type Errors
func (es Errors) Error() string
func (es Errors) Errors() []error
type ISO3166Entry
type Iterator
type ParamValidator
type ResultIterator
type UnsupportedTypeError
func (e *UnsupportedTypeError) Error() string
type Validator

Porform 性能

ginpprof github

diago github pprof结果可视化工具

消息队列

nats-server github  nats.go github  doc

Database 数据库

mongo-go-driver github

mongo-go-examples github

go-mssqldb github Microsoft SQL server driver

immudb github 轻量级、高速的不可变数据库,用于记录和追述。

CI/CD

drone github

cds github 企业级云原生CI/CD开源工具

连续编译工具

air github 监视原文件变更,自动重启程序,减少调试过程中的go run。

连续测试工具

ram github  监视原文件变更,自动进行改动代码相关的单元测试。

运维发布

gopub github 已停更

go-git-webhook github

multissh github ssh轮子

teaweb github doc

sftp

sftpgo github

web ssh

sshwifty github

远程备份与同步

restic github

进程管理

supervisord github

Docker 容器测试

container-structure-test github

PDF 读写

gofpdf github

go-wkhtmltopdf github html转pdf

pdfcpu github PDF文件加工处理

gopdf github

Excel读写

excelize github

MS Office 读写

unioffice github word excel powerpoint

图像生成

canvas github

MarkDown 解析渲染

goldmark github

lute github 对中文支持好

多语言

getlang github 检测语言

example:

package main

import (
	"fmt"
	"github.com/rylans/getlang"
)

func main(){
  info := getlang.FromString("Wszyscy ludzie rodzą się wolni i równi w swojej godności i prawach")
  fmt.Println(info.LanguageCode(), info.Confidence())
}

go-i18n github 多语言支持

分词

gse github

package main

import (
	"flag"
	"fmt"
	"log"

	"github.com/go-ego/gse"
)

var (
	text = flag.String("text", "《复仇者联盟3:无限战争》是全片使用IMAX摄影机拍摄", "要分词的文本")
)

func main() {
	flag.Parse()

	var seg gse.Segmenter
	// seg.LoadDict("../data/dict/dictionary.txt")
	// 加载默认词典
	seg.LoadDict()

	segments := seg.Segment([]byte(*text))
	fmt.Println(gse.ToString(segments, true))

	text2 := []byte("深圳地标建筑, 深圳地王大厦")
	fmt.Println(seg.String(text2, true))
	fmt.Println(seg.Slice(text2, true))

	segs := seg.Segment(text2)

	// log.Println(gse.ToString(segs, false))
	log.Println(gse.ToString(segs))
	// 深圳/ns 地标/n 建筑/n ,/x  /x 深圳/ns 地王大厦/n

	// 搜索模式主要用于给搜索引擎提供尽可能多的关键字
	// segs := seg.ModeSegment(text2, true)
	log.Println("搜索模式: ", gse.ToString(segs, true))
	// 搜索模式: 深圳/ns 地标/n 建筑/n ,/x  /x 深圳/ns 地王/n 大厦/n 地王大厦/n
}

kagome github

"结巴"中文分词的Golang版本 github

汉字转拼音

pinyin github

全文检索

bleve github

blast github 构建在bleve 上,使用kagomo支持日语分词的全文检索引擎

riot github

cli 命令集成

cobra github

图像处理

image2ascii github

imgproxy github

Resize Thumbnail github

imaging github 图像处理

imgcat github 终端下显示图像

静态资源打包进程序

fileb0x github 比statik定制性高

statik github

错误 error

multierr github

go-multierror github

日志 Log

zerolog github 利用context时比zap快

zap github

logger, _ := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
  // Structured context as loosely typed key-value pairs.
  "url", url,
  "attempt", 3,
  "backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)

Loki: like Prometheus, but for logs. github

errlog github 改善错误日志格式,加快调试速度

go-elasticsearch github The official Go client for Elasticsearch

KeyValue Storage 键值对数据库

badger github

bbolt github

godown github

Cache 缓存

ristretto github

fastcache github 缓存能被保存和读取

bigcache github

OpenGL

gl github

glfw github

OpenCV

gocv github

人脸识别

pigo github

文件下载

massivedl github

grab github

go-getter github hashicorp

压缩zip

pgzip github 比go自带的compress/gzip快点

邮件处理

go-imap github 收信

gomail github 送信

enmime github 邮件内容解析

GoMailer github 轻量电子邮件推送服务

hermes github generates clean, responsive HTML e-mails

读取配置文件

viper github

2FA 双因素认证

otp github

gotp github

协程管理

gowp github

ants github 协程池

TEST测试

APITEST

apitest github

BDD

ginkgo github gomega github

mock

mockery github

httpmock github

fake 生成假数据

gofakeit github

模拟文件系统

afero github

断言

testify github

测试框架

goconvey github

泄露测试工具

leaktest github

goleak github

模糊测试工具

go-fuzz github

gofuzz github

性能测试工具

cob github Go项目的持续基准测试比对

http负载测试

cassowary github CI友好

ali github 生成HTTP负载并实时绘制结果的负载测试工具

混沌工程错误注入(环境变量触发)

failpoint github

Compile-time Dependency Injection

wire github sample

代码质量分析

goreporter github

goreporter -p [projectRelativePath] -r [reportPath] -e [exceptPackagesName] -f [json/html/text]  {-t templatePathIfHtml}

软件许可证检查

license-check github

字符串处理

go-strutil github

bluemonday github 防止xss攻击,清理html标记

Cron 定时器

scheduler github

cron github

chart 图表

go-echarts github 中文文档 基于Echarts

私有云平台

pritunl-cloud github

crossplane github 多云监控平台

容器管理平台

开普勒平台开源版 github

AWS SDK

aws-sdk-go github doc

交互式命令执行

go-pry github 可以参考其实现动态提示的方法

GPIO

go-rpio github

SAKS-SDK-GO github

Bluetooth蓝牙

bluetooth github

UART 串口包

serial github

浏览器控制

chromedp github (headless chrome)

图数据库

dgraph github

cayley github

docker中运行的自托管虚拟浏览器

neko github

密码哈希算法Argon2

Argon2 doc

SSH

ssh github

JIRA库

go-jira github

监控面板

monitoror github

告警面板

karma github Alert dashboard for Prometheus Alertmanager

APNS PUSH(支持苹果和Firebase推送通知)

gorush github

hosts 文件管理

txeh github

DateTime 日期时间

gostradamus github 更好的日期时间

carbon github 不错的时间大成

GraphQL Server

gqlgen github

go-graphql-sse-example github vue+golang+graphql+mongo 实例

gqlengine github 二次开发的产品,免去了重复的模式定义

2D Game 跨平台游戏引擎

ebiten github

Charset 字符编码

chardet github 检测是哪种编码

utfdecode github 将utf16和utf32混合的串转成utf16的串

Template 模板

fasttemplate github

hero github

监视系统文件的操作

fsnotify github

URL友好化

slug github

daemon 启动为系统服务

daemon github

Powershell 交互

go-powershell github

go-powershell github

IP位置信息查询

nali github 介绍

====== 以下为 shell ======

kjyw gitee 运维脚本工具库

logo-ls github 带图标的ls命令

====== 以下为 APP ======

RSS阅读器

gorss github

SSH 隧道

mole github

加密笔记应用(利用bbolt存储)

offlinenotepad github

命令行密码管理工具

pwsafe github

可配置的命令行Dashboard工具

sampler github

Lint检查工具

golangci-lint github

mod 依赖分析工具

gomod github

代码依赖图形化工具

go-callvis github

远程调试工具

webrtc-remote-screen github

屏幕共享

screego github

用于自动Web应用程序测试的瑞士军刀

jaeles github 可以通过yaml配置登录信息,自动扫描网址,有WEB UI

安全

huskyCI github CI/CD过程中的安全检查

secure github http的安全检查,与很多http服务器如gin很好的配合

memguard github 内存中数据的保护

go-password-validator github 密码安全性验证

go-safecast github 安全的类型转换

yaml文件转struct

yaml2go github

调试 Kubernetes 中的go

okteto githug doc

Bug 管理

git-bug github

性能测试结果图形化

benchdraw github

代码统计立体化(只支持github项目)

gocity github

Linux图形界面Dock小工具

>调用 linux 命令、获取显示器display、获取鼠标位置

autoplank github 用 autoplank 在多个显示器上使用 Plank 扩展坞

百灵快传(基于http的局域网共享软件)

b0pass gitee github

Hugo静态网站生成器

hugo github

fileboy 文件变更监听通知系统

fileboy github

Gasper 平台即服务(paas)部署和管理应用和数据库

Gasper github doc 可以参考他是如何调用和连接各种命令的

git-chglog 自动生成CHANGLOG.md文件

git-chglog github

gotty 将终端共享为web

gotty github

利用公钥密钥加解密文件

age github

终端里的git GUI

lazygit github

基于gin+gorm+vue搭建的快速后台管理系统模板

gin-vue-admin github

nightingale夜莺监控系统

nightingale github

QRCode传文件

qrcp github

终端下的文本编辑器

micro github

局域网内的网页聊天工具

localchat github

Disk 磁盘信息汇总工具

duf github

基于CLI的HTTP拦截和重放代理

glorp github

文本分析工具民族感情

woke github 不要用“白名单“,要用“允许名单“

爬虫架构

GoCrawler github

youtube 下载命令行

youtube github

====== 以下为 DevOps ======

dtail github 分布式 DevOps 工具,可以同时在许多远程计算机上跟踪、删除、分发日志和其他文本文件。

tbls github CI 友好的数据库文档工具

====== 以下为其他网址 ======

awesome-go

athens : go proxy 服务加速 github

电子书《Go语言原本》 github