Go 原生模糊测试 Fuzzing 让 bug 无处遁形

Go 1.18 把模糊测试直接带进了标准库 testing,重点不是替代单元测试,而是用海量随机、畸形输入去撞出你没预设到的边界问题。本文结合字符串反转示例,讲清它的工作机制、写法、报错原因和适合落地的场景。

Go 原生模糊测试 Fuzzing 让 bug 无处遁形

Go 里的编译时断言,究竟能帮你提前拦下什么问题?

Go 没有专门的“编译时断言”关键字,但开发中依然可以借助常量、数组、接口赋值和 unsafe.Sizeof 等语言特性,把一部分错误拦在编译阶段。本文按常见问题拆解几种实用写法,并说明它们各自适合解决什么问题。

Go 里的编译时断言,究竟能帮你提前拦下什么问题?

GoLand 代码提示速度太慢怎么优化

GoLand 代码提示变慢,多数不是 Go 语言本身的问题,而是索引器反复解析模块、插件或系统服务干扰造成的。文章按排查优先级整理了重刷索引、调整 gopls、处理 Windows 11 服务影响,以及大型项目拆包优化四类办法,方便快速判断瓶颈位置。

GoLand 代码提示速度太慢怎么优化

Go 语言计算向量相似度的三种常见方案

在 Go 里计算向量相似度,常见路径并不止一种。小规模数据可以直接手写余弦、点积和欧氏距离;需要批量计算和更高性能时,适合交给 gonum 这类数值库;当规模进入十万到百万级,并且要做 ANN 检索时,更实际的做法是接入向量数据库。

Go 语言计算向量相似度的三种常见方案

Go 语言中解决浮点数精度问题的最佳实践

Go 里的浮点数精度问题并不是语言缺陷,而是 IEEE 754 二进制表示的天然结果。本文从 0.1 + 0.2 为什么失真讲起,再结合金额计算、精确比较和数据库设计,梳理整数、decimal、math/big 与误差比较四种常见方案的适用边界。

Go 语言中解决浮点数精度问题的最佳实践

CentOS 中如何使用 Go Modules 管理 Golang 依赖

这篇文章围绕 CentOS 下的 Go 依赖管理展开,按安装、环境配置、模块初始化、依赖维护几个关键环节梳理 Go Modules 的基本用法。文中保留了原始命令,并补充了各步骤的作用与适用场景,方便快速上手。

CentOS 中如何使用 Go Modules 管理 Golang 依赖

Go 如何兼容 PHP 的 serialize 和 unserialize

当 PHP 项目迁移到 Go 时,历史数据里常见的 `serialize()`/`unserialize()` 往往会成为兼容点。本文从 PHP 序列化规则入手,结合 `github.com/leeqvip/gophp` 的现成方案,说明 Go 里怎样直接解析和生成 PHP 序列化字符串,以及跨语言场景下该如何选择更稳妥的序列化格式。

Go 如何兼容 PHP 的 serialize 和 unserialize

突破封装边界:读懂 Go 里的 go:linkname 及其代价

`//go:linkname` 是 Go 提供的一条非常规编译指令,能把当前包符号直接绑定到另一个包的函数或变量,甚至包括未导出符号。它常见于标准库和底层优化场景,但会破坏封装并引入明显的版本与维护风险,理解它的适用边界比会写语法更重要。

突破封装边界:读懂 Go 里的 go:linkname 及其代价