# Gin
|
|
Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果您需要性能和良好的生产力,您一定会喜欢 Gin。
# Gorm
|
|
- 全功能 ORM
- 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
- Create,Save,Update,Delete,Find 中钩子方法
- 支持 Preload、Joins 的预加载
- 事务,嵌套事务,Save Point,Rollback To Saved Point
- Context、预编译模式、DryRun 模式
- 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
- SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询
- 复合主键,索引,约束
- Auto Migration
- 自定义 Logger
- 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
- 每个特性都经过了测试的重重考验
- 开发者友好
# Gen
|
|
- 来自动态原始 SQL 的惯用且可重用的 API
- 100% 类型安全的 DAO API,无接口{}
- Database To Struct 遵循 GORM 约定
- GORM 在底层,支持 GORM 支持的所有功能、插件、DBMS
# Ants
|
|
ants
是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。
# Zap
|
|
在 Go 中快速、结构化、分级的日志记录。
# Cast
|
|
Cast 是一个库,用于以一致且简单的方式在不同的围棋类型之间进行转换。
Cast 提供了简单的函数,可以轻松地将数字转换为字符串,一个 接口成布尔等。Cast 在明显 转换是可能的。它不会试图猜测你的意思, 例如,只有当字符串是字符串时,才能将字符串转换为 int int 的表示形式,例如“8”。Cast 是为在 Hugo 中使用而开发的,Hugo 是一个使用 YAML、TOML 或 JSON 的网站引擎 对于元数据。
# 使用改进版本
|
|
修复了一些官方不解决的BUG(Fixed some bugs that are not officially resolved)
- StringMapE 支持数组类型
- ToInt系列的函数支持
08
09
# Viper
|
|
Viper 是适用于 Go 应用程序(包括 12 因素应用程序)的完整配置解决方案。 它设计用于在应用程序中工作,可以处理所有类型的配置需求 和格式。它支持:
- 设置默认值
- 读取 JSON、TOML、YAML、HCL、envfile 和 Java 属性配置文件
- 实时观看和重新读取配置文件(可选)
- 从环境变量中读取
- 从远程配置系统(etcd 或 Consul)读取,并观察更改
- 从命令行标志读取
- 从缓冲区读取
- 设置显式值
- Viper 可以被视为满足所有应用程序配置需求的注册表。
# Cobra
|
|
Cobra 是 Go 的 CLI 框架。它包含一个用于创建强大的现代 CLI 应用程序的库,以及一个用于快速生成基于 Cobra 的应用程序和命令文件的工具。
它是由 Go 团队成员 spf13 为 hugo 创建的,并已被最受欢迎的 Go 项目采用。
# PFlag
|
|
pflag 是 Go 标志包的直接替代品,实现 POSIX/GNU 样式的 –标志。
pflag 与 POSIX 建议的 GNU 扩展兼容 用于命令行选项。有关更精确的描述,请参阅 下面的“命令行标志语法”部分。
pflag 在与 Go 语言相同风格的 BSD 许可证下可用, 可以在 LICENSE 文件中找到。
# CacheGo
|
|
简单的缓存接口
# Validator
|
|
包验证程序基于标记实现结构和单个字段的值验证。
它具有以下独特功能:
- 使用验证标记或自定义验证程序进行跨字段和跨结构验证。
- 切片、数组和地图潜水,允许验证多维字段的任何或所有级别。
- 能够深入研究映射键和值以进行验证
- 通过在验证之前确定接口的基础类型来处理接口类型。
- 处理自定义字段类型,例如 sql 驱动程序 Valuer,请参阅 Valuer
- 别名验证标记,允许将多个验证映射到单个标记,以便更轻松地定义结构上的验证
- 提取自定义字段名称,例如,可以指定在验证时提取 JSON 名称,并在生成的 FieldError 中提供该名称
- 可自定义的 i18n 感知错误消息。
- gin Web 框架的默认验证器;在 Gin 中从 V8 升级到 V9 请参阅此处
# Schema
|
|
Package gorilla/schema 将结构体与表单值相互转换。
表单数据和结构体之间互转
# Testify
|
|
Go 代码 (golang) 一组包,它们提供了许多工具来证明您的代码将按照您的预期运行。
# Dateparse
|
|
在事先不知道格式的情况下解析许多日期字符串。 使用扫描仪读取字节并使用状态机查找格式。 比基于霰弹枪的解析方法快得多。
# ProgressBar (个人感觉比较好用)
|
|
控制台程序的简单进度条。
# Progressbar
|
|
一个非常简单的线程安全进度条,应该可以在每个操作系统上正常工作。 我需要一个 croc 的进度条,但我尝试的所有方法都有问题,所以我又做了一个。 为了与操作系统无关,我不打算支持多行输出。
# Gomock
|
|
gomock 是 Go 编程语言的模拟框架。 它与 Go 的内置测试包集成良好,但也可以在其他上下文中使用。
# UUID
|
|
uuid 包根据 RFC 4122 和 DCE 1.1:身份验证和安全服务生成和检查 UUID。
# Gron
|
|
Gron 为编写和部署 cron 作业提供了清晰的语法。
# 使用改进版本
|
|
主要是修复时间不正确问题, 官方的版本提了pull request但是不修复.
# Lumberjack
|
|
Lumberjack 是一个 Go 包,用于将日志写入滚动文件。
# Rate
|
|
rate 提供速率限制器。
令牌桶限制器
# Resize
|
|
使用常用插值方法调整图像大小。
# Colly
|
|
闪电般快速且优雅的 Gophers 抓取框架
Colly 提供了一个干净的接口来编写任何类型的爬虫/爬虫/蜘蛛。
借助 Colly,您可以轻松地从网站中提取结构化数据,这些数据可用于多种应用,例如数据挖掘、数据处理或归档。
# Excelize
|
|
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.18 或更高版本。
# Tint
|
|
Tint 实现了一个零依赖的 slog.Handler 来写入着色(彩色)日志。 它的输出格式受到 Zerolog.ConsoleWriter 和 slog.TextHandler 的启发。
# Lo
|
|
✨ samber/lo 是一个基于 Go 1.18+ 泛型的 Lodash 风格的 Go 库。
提供各种常用的工具函数: slices
/maps
/math
/
strings
/channels
/intersection
/
search
/Conditional
/manipulation
/
Concurrency
/Error
# Tracerr
|
|
带调用栈的错误, 更精准的定位错误位置!
# 使用改进版本
|
|
新增了一个函数, 需要go版本1.18及以上, 因为需要用到泛型的支持.
# Multierror
|
|
go-multierror 是 Go 的一个包,它提供了一种将错误值列表表示为单个错误的机制。
这允许 Go 中的函数返回一个实际上可能是错误列表的错误。 如果调用者知道这一点,他们可以打开列表并访问错误。 如果调用者不知道,错误会格式化为人类可读的格式。
go-multierror 完全兼容 Go 标准库错误包,包括函数 As、Is 和 Unwrap。 这提供了一种用于反思错误值的标准化方法。
# Goquery
|
|
goquery 为 Go 语言带来了与 jQuery 类似的语法和功能集。它基于 Go 的 net/html 包和 CSS 选择器库 cascadia。由于 net/html 解析器返回的是节点,而不是功能齐全的 DOM 树,因此 jQuery 的状态操作函数(如 height()、css()、detach())已被省略。
此外,由于 net/html 解析器需要 UTF-8 编码,因此 goquery 也需要:调用者有责任确保源文档提供 UTF-8 编码的 HTML。请参阅 wiki 了解执行此操作的各种选项。
从语法上讲,它尽可能接近 jQuery,尽可能使用相同的函数名称,以及温暖而模糊的可链接接口。 jQuery 是一个非常流行的库,我觉得编写一个类似的 HTML 操作库最好遵循它的 API 而不是重新开始(本着与 Go 的 fmt 包相同的精神),即使它的一些方法不太直观(看着你,index()……)。
# SlogMulti
|
|
设计 slog 处理程序的工作流程:
扇出:将 log.Record 并行分发到多个 slog.Handler
管道:动态重写 log.Record(例如:出于隐私原因)
路由:将 log.Record 转发到所有匹配的 slog.Handler
故障转移:将 log.Record 转发到第一个可用的 slog.Handler
负载平衡:通过将 log.Record 发送到 slog.Handler 池来增加日志带宽
# DotEnv
|
|
Ruby dotenv 项目的 Go (golang) 端口(从 .env 文件加载 env 变量)。