Go问答技术文章
-
Go netip.AddrFrom4 接收 [4]byte 并构造原生 IPv4 地址值。本文说明如何读取 String、Is4、As4,怎样处理 []byte 和文本输入,以及 IPv4-mapped IPv6、0.0.0.0 与零 Addr 的边界。358 收藏 -
runtime/metrics 适合读取 Go 运行时定义的指标,expvar 适合发布应用自己维护的公开变量。本文用采样、名称兼容和版本边界说明两者怎么选。357 收藏 -
go mod vendor 后构建仍访问 module cache?从 GOMOD、GOWORK、GOFLAGS、vendor/modules.txt 和 -mod 模式逐层定位。357 收藏 -
Go fuzz corpus 报格式错误时,先定位 testdata/fuzz 中的具体文件,再核对 go test fuzz v1、参数数量、类型与顺序,最后用单条语料完成最小复现。357 收藏 -
Go encoding/base64 中,StdEncoding 保留 RFC 4648 的等号填充,RawStdEncoding 关闭填充。本文用同一份输入对比两种输出,并说明解码匹配、URL 字符集与 WithPadding 的选择边界。357 收藏 -
json.Number 保存的是 JSON 数字原文,而 Int64 内部按十进制整数调用 strconv.ParseInt。1.5、1e3 虽是合法 JSON 数字,却不是 Int64 接受的整数文本;超出 int64 范围则会返回 range error。357 收藏 -
第三方 Go 模块停止维护后,不要只看更新时间做决定。本文从 API 兼容性、修复责任和迁移成本出发,比较替换、分叉与适配器隔离三种方案,并给出 go.mod、fork 和 govulncheck 的落地检查点。357 收藏 -
slog 的普通 error 属性默认不是错误链对象。本文给出 LogValuer 日志适配器,显式输出安全消息、错误码和操作名,并说明包装错误、字段类型迁移与 Handler 的边界。357 收藏 -
Go 1.27 的 goroutineleak 画像只报告运行时能证明永久阻塞的一部分 goroutine。本文按 Lookup 参数和 HTTP 路径说明采集方式,并解释全局引用、可运行 goroutine、IO 阻塞及偶发时序为什么不会出现在画像中。357 收藏 -
Go SQLX StructScan 报 missing destination name,通常不是数据库连接失败,而是查询返回列无法和目标结构体字段映射。本文用一个小型订单查询说明 db 标签、SQL 别名、Mapper 和 Unsafe 的正确边界。357 收藏 -
旧代码仍依赖 log.Logger 时,可以用 slog.NewLogLogger 把输出桥接到 slog.Handler。关键是先选清楚桥接级别,再分别验证旧日志入口、结构化字段和 SetDefault 后的行为。356 收藏 -
用 Go testing.T.Cleanup 管理测试资源时,结合 t.Helper 隐藏辅助函数栈帧,让清理失败更接近真实测试调用方;本文说明生命周期、逆序执行、子测试边界和排查清单。356 收藏 -
Golang · Go问答 | 3星期前 | 基准测试 · go · testing · 性能优化 · 性能测试 CPU count GOMAXPROCS testing.B Go benchmark benchtime
Go benchmark 结果波动大时,应先固定计时边界、-benchtime、-count、-cpu 和机器状态,再用多份样本判断优化是否稳定。本文给出 testing.B、GOMAXPROCS 和环境噪声的排查方法。356 收藏 -
Go ExtraFiles 的下标对应子进程 3+i,而非父进程原描述符。本文说明标准流、平台限制与关闭责任,并用双文件示例区分映射错误、读取偏移和总数误判。356 收藏 -
Gonum mat.Dense 的 Slice 返回的是共享底层数据的矩阵视图,不是独立副本。本文用小矩阵说明别名如何传播、半开区间怎样计算,以及什么时候应该改用 DenseCopyOf。356 收藏