golang 开发知识、技巧、常用包的介绍等。
Go 中的任意精度定点十进制数
注意:decimal 库"只能"表示小数点后最多 2^31 位的数字。
基于魔法数字的媒体类型和文件扩展名检测的快速 Golang 库
Install
go get github.com/gabriel-vasile/mimetype
Usage
mtype := mimetype.Detect([]byte)
// OR
mtype, err := mimetype.DetectReader(io.Reader)
// OR
mtype, err := mimetype.DetectFile("/path/to/file")
fmt.Println(mtype.String(), mtype.Extension())
Go最准确的自然语言检测库,适用于短文本和混合语言文本。
与其他语言检测库相比,lingua-go 的重点是质量而不是数量,即在添加新语言之前首先对一小部分语言进行正确的检测。目前支持75种语言。
安装依赖:
go get github.com/pemistahl/lingua-go
使用示例:
package main
import (
"fmt"
"github.com/pemistahl/lingua-go"
)
func main() {
languages := []lingua.Language{
lingua.English,
lingua.French,
lingua.German,
lingua.Spanish,
}
detector := lingua.NewLanguageDetectorBuilder().
FromLanguages(languages...).
Build()
if language, exists := detector.DetectLanguageOf("languages are awesome"); exists {
fmt.Println(language)
}
// Output: English
}
GWS(Go WebSocket)是一个用 Go 编写的非常简单、快速、可靠且功能丰富的 WebSocket 实现。它设计用于高并发环境,构建"接口", "代理", "游戏", "流媒体", "消息发布订阅"等服务。它提供非常简单的 API, 您可以轻松编写自己的服务器或客户端。
从浏览器 cookie 存储中读取 cookie。kooky 包含访问 Chrome、Firefox、Safari 等 cookie 存储并检索 cookie 的例程。
爬虫框架,可以常规爬取,也可以无头浏览器爬取。
BadgerDB 是一个可嵌入、持久且快速的键值 (KV) 数据库,采用纯 Go 编写。它是 Dgraph 的底层数据库,Dgraph 是一个快速的分布式图形数据库。它旨在成为 RocksDB 等非基于 Go 的键值存储的高性能替代方案。
Badger 非常稳定,可用于处理价值数百 TB 的数据集。Badger 支持并发 ACID 事务,并提供可序列化快照隔离 (SSI) 保证。
用 Go(Golang)编写的推送通知服务器。
live-pprof 是一个用于监控 Go 程序的实时性能分析工具,它可在几秒钟内启动,运行后实时收集指定端口的 pprof 数据,并将 pprof 数据实时在浏览器表示出来。
go install github.com/moderato-app/live-pprof@v1
步骤 1:设置 pprof 端点
package main
import (
"log"
"net/http"
_ "net/http/pprof"
)
func main() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}
步骤 2:监控 pprof 端点
live-pprof 6060
# Or:
live-pprof http://localhost:6060/debug/pprof
# Both commands will monitor http://localhost:6060/debug/pprof
一个非常简单的线程安全进度条,应该可以在每个操作系统上正常工作。不支持多行输出。
progressbar 实现了 io.Writer 因此它可以自动检测写入流的字节数,因此您可以将其用作 io.Reader 的进度条。
req, _ := http.NewRequest("GET", "https://dl.google.com/go/go1.14.2.src.tar.gz", nil)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
f, _ := os.OpenFile("go1.14.2.src.tar.gz", os.O_CREATE|os.O_WRONLY, 0644)
defer f.Close()
bar := progressbar.DefaultBytes(
resp.ContentLength,
"downloading",
)
io.Copy(io.MultiWriter(f, bar), resp.Body)
在终端中的表现

可以进行很多自定义操作 - 更改作者、颜色、宽度、描述、主题等。 查看所有选项。
用于美化表格、列表、进度条、文本等的控制台输出的实用程序,非常强调自定义。


╭─ Game Of Thrones
│ ├─ Winter
│ ├─ Is
│ ╰─ Coming
│ ├─ This
│ ├─ Is
│ ╰─ Known
╰─ The Dark Tower
╰─ The Gunslinger
Go 的 OpenAI ChatGPT、GPT-3、GPT-4、DALL·E、 Whisper API 包装器,非官方的。
支持:
Mailpit 是一款面向开发人员的小型、快速、低内存、零依赖、多平台电子邮件测试工具和 API。
它充当 SMTP 服务器,提供现代 Web 界面来查看和测试捕获的电子邮件,并包含用于自动集成测试的 API。
Mailpit Web UI 默认侦听
http://0.0.0.0:8025
,SMTP端口默认是0.0.0.0:1025
。Go-VCR 是一个用于记录和重放 HTTP 请求的库,用于测试。
package helloworld_test
import (
"testing"
"gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
)
func TestHelloWorld(t *testing.T) {
// Create our recorder
r, err := recorder.New("fixtures/hello-world")
if err != nil {
t.Fatal(err)
}
defer r.Stop() // Make sure recorder is stopped once done with it
client := r.GetDefaultClient()
url := "https://go.dev/"
resp, err := client.Get(url)
if err != nil {
t.Fatalf("Failed to get url %s: %s", url, err)
}
t.Logf("GET %s: %d\n", url, resp.StatusCode)
}
第一次运行此测试代码将导致创建 fixtures/hello-world.yaml盒,其中将包含我们的 HTTP 客户端和远程服务器之间记录的 HTTP 交互。 当我们下次执行此测试时,会发生的情况是go-vcr将从磁带中重播已记录的 HTTP 交互,而不是进行实际的外部调用。
轻松模拟来自外部资源的 http 响应。
基于标签实现结构和单个字段的值验证。
ZOG是受 zod 启发,用于运行时值解析和验证的架构构建器。定义模式,转换值以匹配,断言现有值的形状或两者兼有。 ZOG模式非常表现力,允许建模复杂,相互依存的验证或价值转换。
基于 Go 1.18+ 泛型的 Lodash 风格 Go 库(映射、过滤器、包含、查找...)
自托管通讯和邮件列表管理器
Maddy Mail Server实现了运行电子邮件服务器所需的所有功能。它可以通过SMTP(用作MTA)发送消息,通过SMTP(用作MX)接受消息,并在通过IMAP提供访问它们的同时存储消息。除此之外,它实施了必须保持电子邮件合理安全的辅助协议(DKIM,SPF,DMARC,DANE,DANE,MTA-STS)。
它用一个具有均匀配置和最小的维护成本的守护程序代替了Postfix,Dovecot,Opendkim,OpensPF,OpendMarc等。
注意: IMAP存储是" beta"。
groupcache 是一个分布式缓存和缓存填充库,在许多情况下旨在替代 memcached 节点池。
在GO中轻松解析并生成XML
GoCV 软件包支持 Linux、macOS 和 Windows 上最新版本的 Go 和 OpenCV (v4.11.0)。
利用 md5 码生成头像