1:日志库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
https://github.com/hunterhug/golog

https://github.com/uber-go/zap
https://github.com/rs/zerolog
https://github.com/Sirupsen/logrus


// 日志滚动包
https://github.com/natefinch/lumberjack


// 日志分析和查询平台
https://github.com/clickvisual/clickvisual

2:配置库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// viper 兼容 json,toml,yaml,hcl 等格式的配置库.
https://github.com/spf13/viper

// configor Golang Configuration tool that support YAML, JSON, TOML, Shell Environment
https://github.com/jinzhu/configor



// env
https://github.com/caarlos0/env

// Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper.
https://github.com/knadh/koanf

// A dead simple configuration manager for Go applications.
https://github.com/tucnak/store

3:存储相关

1
2
3
4
5
mysql: https://github.com/go-xorm/xorm
es: https://github.com/elastic/elasticsearch
redis: https://github.com/gomodule/redigo
mongo: https://github.com/mongodb/mongo-go-driver
kafka: https://github.com/Shopify/sarama

4:数据结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
https://github.com/emirpasic/gods (go数据结构,sets,lists,stacks,maps.trees,queues ...)

// mapstructure
https://github.com/mitchellh/mapstructure (map和struct转换)


// json
https://github.com/liu-cn/json-filter

// 延迟队列(delay queue)
github.com/morikuni/go-dqueue

// 无锁队列
https://github.com/lppgo/go-lockfree-queue


// map
https://github.com/cornelk/hashmap (线程安全,lockfree hashmap)
https://github.com/alphadose/haxmap (Fastest and most memory efficient golang concurrent hashmap)
https://github.com/orcaman/concurrent-map


// xmap

5:CLI 命令行

1
2
https://github.com/spf13/cobra
https://github.com/urfave/cli/

6:web 框架

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// gin
https://github.com/JGLTechnologies/gin-rate-limit
https://github.com/appleboy/gin-jwt
// echo
// beego
// goframe
// firber

gocondor [A golang framework for building modern APIs]
// https://github.com/gocondor/gocondor
...

7:RPC 和微服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// grpc
https://github.com/grpc/grpc-go

// micro
https://github.com/asim/go-micro

// kratos
https://go-kratos.dev/docs/getting-started/usage

//
https://github.com/air-go/rpc

7.1 Remote Procedure Call

7.1.1 原生 RPC

7.1.2 GRPC

7.1.2.1 GRPC 安装

7.1.2.2 GRPC 使用

7.1.2.3 grpc-middleware

1
https://github.com/grpc-ecosystem/go-grpc-middleware

7.1.2.4 GRPC 测试

  • (1): BloomRPC

    • <1> 二进制安装[https://github.com/uw-labs/bloomrpc/releases]
    • <2> Source Code 安装
    1
    2
    3
    4
    5
    
    git clone https://github.com/uw-labs/bloomrpc.git
    cd bloomrpc
    
    yarn install && ./node_modules/.bin/electron-rebuild
    npm run package
    
  • (2): grpcUI

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    // 安装
    go get github.com/fullstorydev/grpcui/...
    go install github.com/fullstorydev/grpcui/cmd/grpcui
    
    grpcui -help
    
    // 使用
    grpcui -plaintext localhost:12345
    gRPC Web UI available at http://127.0.0.1:60551/...
    
    // 错误
    Failed to compute set of methods to expose: server does not support the reflection API
    这种情况下加个反射就可以了 listen  main.go 新增如下代码即可`reflection.Register(s)`
    
    • ptg: 用 Go 写的 GUI gRPC 客户端

7.1.2.5 GRPC 压测 ghz

1
2
3
4
5
6
7
8
9
  ghz -insecure \
  --proto ./protos/routeguide.proto \
  --call routeguide.RouteGuide.GetFeature \
  --skipTLS \
  --insecure \
  -d '{"latitude":409146138,"longitude":-746188906}' \
  -c 100 \
  -n 100000 \
  localhost:50051

7.2 Micro Services

8:好用可替换库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// json
https://github.com/bytedance/sonic

// map

// go pool
https://gitee.com/xuesongtao/taskpool/tree/master
ants
https://github.com/sourcegraph/conc // Better structured concurrency for go

// map
https://github.com/heiyeluren/xmm

//
https://github.com/sasha-s/go-deadlock

// websocket
https://pkg.go.dev/github.com/gorilla/websocket
https://github.com/lxzan/gws

// channel
https://github.com/bruceshao/lockfree  比原生channel更快的lockfree队列

9:数据库相关

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// gorm

// db2gorm 根据数据库表生成对应的struct
https://github.com/qmhball/db2gorm
github.com/gohouse/converter

// gormt
https://gitee.com/mirrors/gormt

// table2struct
https://github.com/jiazhoulvke/table2struct


// mongo
https://github.com/qiniu/qmgo

10:MQ 库

11:微服务组件库

11.1 限流

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
https://github.com/uber-go/ratelimit
https://blog.csdn.net/chenchongg/article/details/85342086
https://github.com/juju/ratelimit
https://github.com/JGLTechnologies/gin-rate-limit

// 分布式速率限制的滑动窗口算法的 Golang 实现
https://github.com/RussellLuo/slidingwindow

// 分布式应用程序的 Golang 速率限制器
https://github.com/mennanov/limiters

// throttled 基于通用信元速率算法实现了对资源的访问速率限制,资源可以是特定的 URL、用户或者任何自定义的形式,可以很方便地与各种 http 和 rpc 框架进行集成。throttled 定义了限流元信息的存储抽象,并内置了 memstore,redis store 等元信息存储实现,我们可以根据具体的使用场景实现单机限流和集群限流
https://github.com/throttled/throttled

11.2 熔断 CircuitBreaker

1
2
3
4
5
// gobreaker
https://github.com/sony/gobreaker

// hystrix-go
https://github.com/afex/hystrix-go

11.3 链路追踪

11.3.1 openTracing

11.3.2 oepnTelemetry

12: 测试相关 related

1
https://github.com/kyoh86/richgo

12.1 单元测试

12.2 性能测试

12.3 FuzzTesting

12.4 LoadTesting

1
2
fortio
// https://github.com/fortio/fortio

14: 性能分析

  • ThreadLocal for Golang :https://github.com/timandy/routine

14.1 prof

14.2 trace

14.3 性能可视化分析

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// statsviz 即时实时可视化 Heap、Objects、Goroutines、GC 等
https://github.com/arl/statsviz
https://polarisxu.studygolang.com/posts/go/pkg/statsviz/

// statsview  一个实时的 Golang runtime stats visualization profiler
https://github.com/go-echarts/statsview

// parca 持续分析以分析 CPU、内存使用量随时间的变化,直至行号
https://github.com/parca-dev/parca

//
https://studygolang.com/topics/14979
https://github.com/xyctruth/profiler

// autopprof
https://github.com/lppgo/autopprof

// 依赖分析
https://github.com/loov/goda

// Visualize Go Dependency Trees
https://github.com/KyleBanks/depth

// 以Graphviz 点格式展示依赖图
github.com/kisielk/godepgraph
godepgraph -s import-cycle-example | dot -Tpng -o godepgraph.png

13: 代码检测 related

13.1 竞态检测

go run -race xxx.go

13.2 go vet 静态检查

1
2
go vet //只在一个单独的包内可用,不能使用flag 选项
go tool vet <directory|files> //更加完整,它可用用于文件和目录。目录被递归遍历来找到

13.3 Shadowing variable

  • 也叫幽灵变量,影子变量

  • 不小心覆盖的变量 对从动态语言转过来的开发者来说,简短声明很好用,这可能会让人误会 := 是一个赋值操作符。

如果你在新的代码块中像下边这样误用了 :=,编译不会报错,但是变量不会按你的预期工作:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
func main() {
    x := 1
    println(x)      // 1
    {
        println(x)  // 1
        x := 2
        println(x)  // 2    // 新的 x 变量的作用域只在代码块内部
    }
    println(x)      // 1
}

这是 Go 开发者常犯的错,而且不易被发现。

可使用官方提供的 vet 工具来诊断这种变量覆盖,它默认是不会自动执行的:

1
2
> go tool vet -shadow main.go
main.go:9: declaration of "x" shadows declaration at main.go:5

但是官方的 vet 不会报告全部被覆盖的变量,这时候我们就要借助第三方包 —— go-nyet 来做进一步的检测了。

  • go-nyet
1
2
3
4
5
6
7
8
9
// go get
go get github.com/barakmich/go-nyet

// run
go-nyet ./...
# or
go-nyet subpackage
# or
go-nyet file.go

15: health/status checking

  • 服务健康状态检查
1
2
3
4
5
// AlterManager


// easyprobe
https://github.com/megaease/easeprobe

16: Others

16.1 email 电子邮件

1
2
3
//
https://github.com/AfterShip/email-verifier
https://github.com/jordan-wright/email

16.2 热编译

1
2
3
4
5
6
7
8
gowatch
// https://github.com/silenceper/gowatch
// 配置文件示例:https://github.com/silenceper/gowatch/blob/master/example/gowatch.yml


air
// https://github.com/cosmtrek/air
// 配置文件示例:https://github.com/cosmtrek/air/blob/master/air_example.toml

16.3 参数校验

1
2
validator
// https://github.com/go-playground/validator

16.4 任务调度工具

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cronsun
// https://github.com/shunfei/cronsun

gocron
// https://github.com/ouqiang/gocron

// cron 定时任务
https://github.com/robfig/cron
https://github.com/deatil/doak-cron

// coming 是一个原生的任务调度系统,目前给出了定时任务和计划任务的解决方案
https://github.com/alexanyang/coming

16.5 自动化运维平台

1
2
gaia
// https://github.com/gaia-pipeline/gaia

16.6 deep preety print

1
2
go-spew
// https://github.com/davecgh/go-spew

16.7 Juniper 是一个使用泛型扩展 Go 标准库的库,包括容器、迭代器和 stream

1
2
juniper
// https://github.com/bradenaw/juniper

16.8 samber/lo

  • Lodash 是一个内部封装了诸多对字符串、数组、对象等常见的数据类型的处理函数的一套工具库
  • A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find…)
1
2
lo
// https://github.com/samber/lo

16.9 gopsutil

  • gopsutil psutil for golang
1
2
https://github.com/shirou/gopsutil
https://mp.weixin.qq.com/s/yTblk9Js1Zcq5aWVcYGjOA

16.10 数学相关的库

1
2
3
4
5
6
7
8
// 任意精度小数decimals
https://github.com/cockroachdb/apd

// 数学统计,中位数,平均值等
https://github.com/montanaflynn/stats

// decimal
https://github.com/shopspring/decimal

16.11 提供优化的算法以利用现代 CPU 的特性

1
https://github.com/segmentio/asm

16.12 FTP

1
2
// 基于 Golang 的自治 FTP 服务器,带有 SFTP、S3、Dropbox 和 Google Drive 连接器。
https://github.com/fclairamb/ftpserver

16.13 使用 cmux 实现服务端连接多路复用

1
2
3
// cmux
https://mp.weixin.qq.com/s/2cERDCRKlmfHKv8gY324Hg
https://github.com/soheilhy/cmux

16.14 Golang 时间与日期

1
2
3
4
// carbon 是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用
https://github.com/golang-module/carbon

https://github.com/jinzhu/now

16.15 Console progress bar 进度条

1
2
3
4
5
// Console progress bar for Golang
https://github.com/cheggaaa/pb

//
https://github.com/schollz/progressbar

16.16 图表 chart

1
https://github.com/go-echarts/go-echarts

16.17 读写文件相关

1
2
3
4
// excelize


// cvs

16.18 数学 math

1
2
// decimal
https://github.com/shopspring/decimal

16.19 流量录制

1
https://github.com/didi/sharingan

16.20 常用软件 SDK

16.20.1 钉钉 dingtalk

1
https://github.com/zhaoyunxing92/dingtalk

16.20.1 微信 wechat

16.21 go 加解密

1
2
3
https://github.com/golang-module/dongle
https://github.com/lppgo/my_test/tree/master/033_%E5%8A%A0%E8%A7%A3%E5%AF%86
https://github.com/deatil/go-cryptobin

17 一些特殊的库 Lib

18 tools 工具库

19 金融交易相关

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 期货期权 ctp 接口 Golang版 (for linux64)
https://gitee.com/mayiweb/goctp

// 股票期权 ctp 接口 Golang版 (for linux64)
https://gitee.com/mayiweb/goctp_sopt


// 恒生 股票期权 极速api 接口 Golang版 (for linux64)
https://gitee.com/mayiweb/gohs


//
https://github.com/krenx1983/openctp

// 处理货币与金融领域的库
https://github.com/jobbole/awesome-go-cn#%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86
accounting : Go语言金钱及货币格式  https://github.com/leekchan/accounting
currency : 处理货币金额,提供货币信息和格式
currency : 高性能精确的货币计算包
decimal : 支持任意精度的十进制数的go包  https://github.com/shopspring/decimal
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 验证及欧洲增值税率工具

20 gosdk

  • sdk 三方库:https://github.com/eryajf/third-tools
  • Go 开发常用工具库, Google2 步验证客户端,AES 加密解密,RSA 加密解密,钉钉机器人,邮件发送,JWT 生成解析,Log,BoltDB 操作,图片操作,json 操作,struct 序列化

20.1 微信

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// PowerWeChat是一款简单易用的WeChat SDK for Golang目前已经覆盖微信公众号、微信小程序、微信支付、企业微信。功能非常的强大,几乎是把微信生态的产品都包含在内
https://powerwechat.artisan-cloud.com/

// go-wechat-miniapp-sdk
https://github.com/dgb8901/go-wechat-miniapp-sdk

https://github.com/wenerme/go-wecom

// 利用企业微信像微信发信息
https://github.com/saucer-man/wepush

// 企业微信群机器人接口 Golang 封装
https://github.com/vimsucks/wxwork-bot-go

20.2 钉钉

1
2
3
https://github.com/CatchZeng/dingtalk

https://github.com/zhaoyunxing92/dingtalk

21 go devops

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// ---------------- gitlab -------------------
// Gogs 是一款极易搭建的自助 Git 服务,类似gitlab
https://github.com/gogs/gogs/blob/main/README_ZH.md
// 女娲 - 开源 DevOps CI/CD 自动构建和自动部署系统
https://github.com/nvwa-io/nvwa-io


// ---------------- iptables -------------------
// iptables-web是一个轻量级的iptables web管理界面程序
https://github.com/pretty66/iptables-web


// Docker for YApi 一键部署YApi
https://github.com/jinfeijie/yapi

// Syncd - 自动化部署工具
https://github.com/dreamans/syncd

// Infinite 用于开发交互式 CLI(tui,terminal) 程序的组件库
https://fzdwx.github.io/infinite/


// mysql  审计平台
https://github.com/cookieY/Yearning

// supervisord
https://github.com/ochinchina/supervisord

// 可交互的网络探测分析器
https://github.com/chenjiandongx/sniffer

// 短链接
https://github.com/weiwei2012holy/short_url


// go流量回放
https://github.com/buger/goreplay

// 截图并发给robot
https://github.com/eryajf/care-screenshot

// 打印表格table
https://github.com/liushuochen/gotable


// prometheus 仪表盘instrumentation库
https://github.com/prometheus/client_golang


// Semaphore is a 运行 Ansible playbook 的响应式web UI
https://docs.ansible-semaphore.com/

// gossh
https://github.com/krilor/gossh

22 数据分析

  • 类似于 numpay,pandas

  • Go 中的数据分析——如何使用 Gota 包:https://www.freecodecamp.org/news/exploratory-data-analysis-in-go-with-gota/

  • feature格式: https://github.com/lppgo/feather

  • dbf格式:

    • https://github.com/kcasctiv/dbf3
    • github.com/LindsayBradford/go-dbf v0.0.0-20181206104747-5f7a16f88561 // 注意版本