为什么只有建设网站打不开,免费推广网站工具,好吊顶网站,网站建设什么语言比较好目录 高性能go开发建议组件字符串数据结构类型转换Jsonflagreflect日期时间Math异常开发工具包调试工具翻译对象复制验证验证码weChat支付ExcelWord图像PDF文件IOruntimeOSDevops工具 Web框架gin 微服务框架容器编排消息队列测试日志远程调用网络通信异步并发数据库 存储缓存鉴… 目录 高性能go开发建议组件字符串数据结构类型转换Jsonflagreflect日期时间Math异常开发工具包调试工具翻译对象复制验证验证码weChat支付ExcelWord图像PDF文件IOruntimeOSDevops工具 Web框架gin 微服务框架容器编排消息队列测试日志远程调用网络通信异步并发数据库 存储缓存鉴权限流注册中心Api网关链路跟踪监控断路器配置重试分布式调度静态建站服务器爬虫Book教程参考文档 高性能go开发建议
1尽可能的使用:去初始化声明一个变量在函数内部 2尽可能的使用字符代替字符串 3尽可能的使用切片代替数组 4尽可能的使用数组和切片代替映射 5如果只想获取切片中某项值不需要值的索引尽可能的使用for range去遍历切片这比必须查询切片中的每个元素要快一些 6当数组元素是稀疏的例如有很多0值或者空值nil使用映射会降低内存消耗 7初始化映射时指定其容量 8当定义一个方法时使用指针类型作为方法的接受者 9在代码中使用常量或者标志提取常量的值 10尽可能在需要分配大量内存时使用缓存 11使用缓存模板
组件
字符串
strings
strings.Split(s, sep) 用于自定义分割符号来对指定字符串进行分割同样返回 slice。
strings.Join(sl []string, sep string) string //Join() 用于将元素类型为 string 的 slice 使用分割符号来拼接组成一个字符串
strings.Contains(s, f)
strings.HasPrefix(s, prefix string) bool
strings.HasSuffix(s, suffix string) bool
strings.Index(s, str string) int
strings.LastIndex(s, str string) int
strings.Replace(str, old, new string, n int) string
strings.Count(s, str string) int
strings.Repeat(s, count int) string
strings.TrimSpace(s) 来剔除字符串开头和结尾的空白符号
如果你想要剔除指定字符则可以使用 strings.Trim(s, cut) 来将开头和结尾的 cut 去除掉。该函数的第二个参数可以包含任何字符
如果你只想剔除开头或者结尾的字符串则可以使用 TrimLeft() 或者 TrimRight() 来实现。
strings.ToUpper(item)
strings.NewReader(str) 用于生成一个 Reader 并读取字符串中的内容然后返回指向该 Reader 的指针从其它类型读取内容的函数还有
Read() 从 []byte 中读取内容。
ReadByte() 和 ReadRune() 从字符串中读取下一个 byte 或者 rune数据结构
gods
切片slice
map map 默认无序 如果你想为 map 排序需要将 key或者 value拷贝到一个切片再对切片排序使用 sort 包详见第 7.6.6 节然后可以使用切片的 for-range 方法打印出所有的 key 和 value。
import (fmtsort
)var (barVal map[string]int{alpha: 34, bravo: 56, charlie: 23,delta: 87, echo: 56, foxtrot: 12,golf: 34, hotel: 16, indio: 87,juliet: 65, kili: 43, lima: 98}
)func main() {fmt.Println(unsorted:)for k, v : range barVal {fmt.Printf(Key: %v, Value: %v / , k, v)}keys : make([]string, len(barVal))i : 0for k, _ : range barVal {keys[i] ki}sort.Strings(keys)fmt.Println()fmt.Println(sorted:)for _, k : range keys {fmt.Printf(Key: %v, Value: %v / , k, barVal[k])}
}堆包 container/heap
双向链表 container/list
类型转换
strconv strconv包提供了字符串和数字之间的转换功能可以方便地进行类型转换。
strconv.Itoa(int(bytesLength / 1024)) //将int转换为字符串
strconv.Atoi(s string) (i int, err error) //将字符串转换为intcast: 不需要panic在Go语言中进行类型转换易如反掌且安全。
collection: “Collection”为处理数据数组提供了一个流畅、方便的封装。你可以使用“Collect()”方法将一个map或者数组轻松地转换成一个Collection。然后你可以使用Collection提供的强大而优雅的API来处理数据。
Json
json包 提供了JSON格式的编解码功能可以方便地处理JSON数据。
type User struct{Name string json:nameAge int json:age
}
user : {zhangsan, 20}
// 实体转json
jsonStr, err json.Marshal(user);
fmt.Printf(%s\n, jsonStr);myUser : User{}
// json转实体
myUser, err json.Unmarshal(jsonStr);
fmt.Printf(%v\n, myUser);gjson: 非常好用的json解析工具库
json-to-go 给你一个json结构的数据能够将代码转换为对应的结构体直接在代码中使用这简直太方便
flag
flag包提供了解析命令行参数的功能可以方便地获取用户输入的参数。
cobra: 是一个功能强大的命令行工具库我们用它来实现内部的命令行工具
reflect
reflect包提供了反射的功能可以在程序运行时动态地获取和修改对象的信息。
日期时间
time time包提供了时间相关的函数包括获取当前时间、时间格式化、时间操作等功能。
time.Now()
time.Sleep(1 * time.Second)now 时间工具库
Math
Decimal decimal 精度计算
异常
errors:更强大的异常堆栈
开发工具包
env: 这个库可以将我们的 环境变量 转换为一个 struct
dig: 一个依赖注入库 所有的对象都是单例。有一个统一的地方管理对象。使用时直接传递对象当做参数进来即可容器会自动注入。
sql2gorm: 用于将 sql 语句转换为 golang 的 struct
gowatch: 热编译工具
优雅的重启Http服务
revive: golang 代码质量检测工具
starcharts: Plot your repository stars over time.
lux: Fast and simple video download library and CLI tool written in Go
sponge_examples: Some examples of using sponge to develop go projects.
utils: 基于Go Mod的Golang常用开发工具包utils包括字符串处理、日期转换、类型转换、切片处理、压缩、加密等
调试工具
perf: 代理工具支持内存cpu堆栈查看并支持火焰图
go-torch: 快捷定位程序问题
gops: A tool to list and diagnose Go processes currently running on your system
vagrant 开发环境管理工具单机搭建可移植工具的利器。支持多种虚拟机后端。类似于docker
nomad 轻量级容器调度工具 可以非常方便的管理容器和传统应用相比 k8s 来说简单不要太多.
vault 敏感信息和密钥管理工具
weaver 高度可配置化的 http 转发工具基于 etcd 配置。
supervisor 进程监控工具
foreman 基于procFile进程管理工具. 相比 supervisor 更加简单。
whistle 基于 httphttpswebsocket 的调试代理工具配置功能丰富。在线教育的 nohost web 调试工具基于此开发.
CloudXNS-DDNS 动态域名
翻译
go-pinyin: 汉字转拼音
对象复制
copier: 一个数据复制的库与 Java 中的 BeanUtils.copy() 类似可以将两个字段相同但对象不同的 struct 进行数据复制也支持深拷贝。
验证
govalidator: 使用简单规则验证Go语言的请求数据。受Laravel请求验证启发。
govalidator: 一个用于字符串、结构体和集合的验证器和过滤器包基于validator.js。
ozzo-validation: 提供可配置和可扩展的数据验证功能
验证码
aj-captcha-go: AJ-Captcha行为验证码的Go实现包
base64Captcha: 图像验证码
weChat
wechat: WeChat SDK for Go 微信SDK简单、易用
wechat-go: go version wechat web api and message framework for building wechat robot
微信开发
支付
gopay: 微信、支付宝、通联支付、拉卡拉、PayPal、Apple 的Go版本SDK。【极简、易用的聚合支付SDK】
Excel
excelize: 读取和写入XLAM / XLSM / XLSX / XLTM / XLTX文件。它支持读取和写入Microsoft Excel™ 2007及以上版本生成的电子表格文档。该库通过高度兼容性支持复杂的组件并提供流式API以从具有大量数据的工作表中生成或读取数据。此库需要 Go 版本1.16或更高版本。您可以使用go的内置文档工具查看完整文档或在线查看 go.dev 和文档参考。
Word
unioffice: 文档 (docx) [Word] 读/写/编辑 格式化 图片 表格 Word 转 PDF (docx to pdf) 电子表格 (xlsx) [Excel] 读/写/编辑
图像
imaging: Package imaging 提供了基本的图像处理功能如调整大小、旋转、裁剪、亮度/对比度调整等。
gg: gg是一个使用纯Go语言渲染2D图形的库。
PDF
gopdf: gopdf是一个用Go语言编写的生成PDF文档的简单库。
gofpdf: gofpdf是一个实现了基于高级支持文本、绘图和图像的PDF文档生成器。
文件IO
io包 提供了读写数据的基本工具,大部分标准库中输入输出相关的包均依赖于此包。
filename : filePath .txt
body, err : ioutil.ReadFile(filename)
if err ! nil {return nil, err
}bufio包 在 io 包的基础上提供更高级的读写缓冲
runtime
提供了与运行时系统进行交互的接口
OS
os包提供了与操作系统交互的函数包括文件操作、进程管理、环境变量等功能
Devops工具
Yearning: A most popular sql audit platform for mysql
gitea: Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
Web框架
gin
gin中文文档
gin: gin是一款轻量级的Web框架具有高性能和易用性的特点可以快速开发Web应用。
gin-vue-admin: 基于vitevue3gin搭建的开发基础平台支持TS,JS混用集成jwt鉴权权限管理动态路由显隐可控组件分页封装多点登录拦截资源权限上传下载代码生成器表单生成器,chatGPT自动查表等开发必备功能。
go-gin-api: 基于 Gin 进行模块化设计的 API 框架封装了常用功能使用简单致力于进行快速的业务研发。比如支持 cors 跨域、jwt 签名验证、zap 日志收集、panic 异常捕获、trace 链路追踪、prometheus 监控指标、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、gormgen 代码生成工具、graphql 查询语言、errno 统一定义错误码、gRPC 的使用、cron 定时任务 等等。
ferry: 基于Gin Vue Element UI前后端分离的工单系统
go-admin: go-admin是基于golang快速搭建可视化数据管理后台的框架
go-admin: 基于Gin Vue Element UI Arco Design Ant Design 的前后端分离权限管理系统脚手架包含了多租户的支持基础用户管理功能jwt鉴权代码生成器RBAC资源控制表单构建定时任务等3分钟构建自己的中后台项目项目文档》https://www.go-admin.pro V2 Demo https://vue2.go-admin.dev V3 Demo https://vue3.go-admin.dev Antd 订阅版https://antd.go-admin.pro
gf gf: GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.
beego beego: beego是一款全功能的Web框架具有MVC架构、ORM、路由、缓存、Session等功能。
iris iris: The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio
echo echo: echo是一款高性能的Web框架具有路由、中间件、模板等功能适合构建RESTful API。
revel: A high productivity, full-stack web framework for the Go language.
微服务框架
go-zero: go-zero是一个集成了各种工程实践的web和rpc框架。
Go kit - A toolkit for microservices
Istio
jupiter: Governance-oriented Microservice Framework.
dapr: Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
DI依赖注入 yoyogo: YoyoGo is a simple, light and fast , dependency injection based micro-service framework written in Go. Support Nacos ,Consoul ,Etcd ,Eureka ,kubernetes.
容器编排
k8s kubernetes: Production-Grade Container Scheduling and Management
消息队列
队列 nsq: A realtime distributed messaging platform
asynq: 分布式任务队列 保证至少执行一次任务 重试失败的任务 在工作进程崩溃时自动恢复任务 加权优先级队列 严格优先级队列
Machinery异步队列
IM聊天 go-chat: go-chat.使用Go基于WebSocket开发的web聊天应用。单聊群聊。文字图片语音视频消息屏幕共享剪切板图片基于WebRTC的P2P语音通话视频聊天。
go-chat-web: 使用React基于WebSocket的聊天程序普通文本消息文件图片视频消息语音消息视频通话屏幕共享等。
im_service: golang im server
chat: Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots
测试
testing
func Test(t *testing.T) {
}monkey 单元测试
gomonkey 是一个 mock 打桩工具当我们写单元测试时需要对一些非接口函数进行 mock 会比较困难这时就需要用到它了
gotests: 自动生成测试用例工具
testify: A toolkit with common assertions and mocks that plays nicely with the standard library
mock: GoMock is a mocking framework for the Go programming language.
sharingan: Sharingan写轮眼是一个基于golang的流量录制回放工具适合项目重构、回归测试等。
日志
fmt
fmt.Println(v)func fmt.Fprintln(w io.Writer, a ...invalid type) (n int, err error)
fmt.Fprintln(w, hello, world)log包 提供了日志记录的功能可以方便地记录程序运行时的信息。
logrus logrus_mail 邮件通知hooks zap
远程调用
RPC grpc-go: The Go language implementation of gRPC. HTTP/2 based RPC
rpcx: Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it’s better, use it! 有, 有! build for cloud!
tinyrpc: Fast, stable, mini RPC framework based on protocol buffer
http client req: 简单而强大简单易用提供丰富的客户端级和请求级设置所有设置均为直观的链式方法。
resty: GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS等简单且可链式调用的设置和请求方法
fasthttp
mux: Package gorilla/mux is a powerful HTTP router and URL matcher for building Go web servers with
sessions: Package gorilla/sessions provides cookie and filesystem sessions and infrastructure for custom session backends.
websocket websocket: websocket提供了WebSocket协议的支持可以实现实时通信的功能。
Restful和gprc相互转换
网络通信
goproxy: Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。
go-sniffer: 可扩展的抓包工具可以开发自定义协议的工具包 抓包截取项目中的数据库请求并解析成相应的语句。
ngrok 反向代理工具快捷开放内网端口供外部使用。
cfssl: 配置化生成证书 从根证书到业务侧证书一键生成.
acme.sh: 免费的证书获取工具 基于 acme 协议从 letsencrypt 生成免费的证书有效期 1 年可自动续期。
Mqtt通信
balancer: 负载均衡 A go library that implements load balancing algorithms. Fast, stable mini layer 7 load balancer.
net/http
func IndexHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, hello, world. http: %s, r.URL.Path)
}func main() {http.HandleFunc(/, IndexHandler)http.ListenAndServe(:8080, nil)
}ping ping: 检测节点连通性ping包及其丢包率
useragent useragent: HTTP User Agent parser for the Go programming language.
异步并发
tunny goworker async
sync 异步 sync/atomic 原子操作
// 原子操作版加函数
func atomicAdd() {atomic.AddInt64(sumCount, 1)wg.Done()
}sync.WaitGroup
var wg sync.WaitGroupfunc runTask(id int) {// 推出一个减去1defer wg.Done()fmt.Printf(task %d start..\n, id)time.Sleep(2 * time.Second)fmt.Printf(task %d complete\n, id)
}func asyncRun() {for i : 0; i 10; i {go runTask(i 1)// 没启动一个go routine 就1wg.Add(1)}
}func main() {asyncRun()wg.Wait()
}channel channel包 Golang中的一种并发通信机制可以实现协程之间的数据传递和同步。
context context包 提供了上下文管理的功能可以方便地控制并发协程的执行。
数据库 存储
gorm gorm: 一个功能齐全的 Golang 对象关系映射库
database/sql sql包提供了数据库操作的接口可以方便地连接和操作数据库。)
sqlx: 手写sql
mysql mysql包提供了MySQL数据库的支持可以方便地进行MySQL数据库的操作。 xorm 对象关系映射库
redis redis包 提供了Redis数据库的支持可以方便地进行Redis数据库的操作。 redis/go-redis: Redis Go client
redigo
codis: Proxy based Redis cluster solution supporting pipeline and scaling dynamically
redis-tools: A collection of redis tools, including distributed lock, cas, casEx, cad
kafka sarama
es elastic: 这也是一个非常成熟的 elasticsearch 库。
qax-os/ElasticHD: Elasticsearch 可视化DashBoard, 支持Es监控、实时搜索Index template快捷替换修改索引列表信息查看 SQL converts to DSL等
mongo mongo-go-driver
etcd etcd: Distributed reliable key-value store for the most critical data of a distributed system
分布式存储 tidb: TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://tidbcloud.com/free-trial
kv 存储 lotusdb: Fast k/v storage compatible with lsm tree and btree, optimization of badger and bbolt.
gin-cloud-storage: 使用Go语言开发的云存储网盘项目
缓存
go-cache 是一个类似于 Java 中的 Guava cache 线程安全使用简单不需要 分布式缓存 的简单场景可以考虑。
鉴权
iam: 企业级的 Go 语言实战项目认证和授权系统带配套课程
权限控制
jwt: 一个完整的JSON Web Token (JWT)实现。该库支持解析和验证以及生成和签名JWT。
oauth2: goauth2的后继者。通用OAuth 2.0包提供JWT、Google APIs、Compute Engine和App Engine支持。
限流
ratelimit http限流
注册中心
Consul
Api网关
api网关
链路跟踪
jaeger
监控
prometheus
断路器
circuitbreaker: Circuit Breakers in Go
配置
configor 是一个配置文件读取库支持 YAML /JSON/TOML 等格式。
viper: 兼容 jsontomlyamlhcl 等格式的日志库
重试
retry: ♻️ The most advanced interruptible mechanism to perform actions repetitively until successful.
分布式调度
cron: a cron library for go
gocron: Easy and fluent Go cron scheduling
cronsun
gocron
静态建站
hugo hugo: The world’s fastest framework for building websites.
服务器
zinx: A lightweight concurrent server framework based on Golang.(基于Golang轻量级TCP并发服务器框架). leaf: A game server framework in Go (golang)
livego 直播服务器
爬虫
goquery: A little like that j-thing, only in Go.
Book教程
Go 语言切片的实现原理
golang-developer-roadmap
build-web-application-with-golang
7天用Go从零实现Web框架Gee教程
Go语言高级编程
awesome-go: A curated list of awesome Go frameworks, libraries and software
GolangFamily
Uber Go 语言编码规范中文版
go-awesome: Go 语言优秀资源整理为项目落地加速
learning_tools: Go 学习、Go 进阶、Go 实用工具类、Go DDD 项目落地、Go-kit 、Go-Micro 、Go 推送平台、微服务实践
参考文档
Wechat-ggGitHub/Awesome-GitHub-Repo: 收集整理 GitHub 上高质量、有趣的开源项目。
go 语言工具包