Go问答技术文章
-
Go 交叉编译找不到目标系统头文件,通常是 cgo 使用了宿主机编译器,或目标 sysroot、第三方开发包不完整。本文按 cgo 开关、CC、sysroot、pkg-config 和链接阶段给出排查顺序。390 收藏 -
Go bidirule 检查 RFC 5893 方向规则,不判断文本语义或发布许可。本文给出独立检查报告示例,说明字段适用范围、状态设计和方向规则与内容策略的分工。390 收藏 -
解释 Go context 取消后 goroutine 仍可能继续工作的原因,给出 select 监听、资源释放、退出确认和可复现检查方法。389 收藏 -
Go 原生 fuzz 测试的可复现性取决于 seed corpus 管理。本文区分 F.Add、testdata/fuzz 和 GOCACHE/fuzz,说明如何保留固定边界样例、沉淀失败输入并用 go test 稳定回放。389 收藏 -
Go csv.FieldPos 的 column 按 UTF-8 字节计算,不按字符计算。本文用中文 CSV 说明字段起点、解析错误和展示层字符位置如何分开处理。389 收藏 -
Go fuzz 语料变多时,先区分可提交的种子与失败样本,再隔离 $GOCACHE/fuzz 生成缓存,最后用运行时长和清理策略控制 CI 磁盘占用。389 收藏 -
ML-DSA 验签失败时,先区分 PEM、PKIX 解析和公钥动态类型,再检查参数、消息与上下文。本文给出安全类型断言示例,并说明类型正确不代表公钥身份可信。389 收藏 -
Go text/template 的 Execute 执行失败时,Writer 可能已经收到部分结果。本文用 missingkey=error 解释部分输出与错误同时存在的原因,再用 bytes.Buffer 隔离模板渲染和正式提交,并区分模板错误、最终写出错误、并发共享 Writer 与 html/template 的边界。389 收藏 -
Go finalizer 的触发时机由垃圾回收器决定,不能替代文件、连接等资源的确定性释放。本文对照显式 Close、defer 和 KeepAlive,给出从 finalizer 主路径迁移的代码与回归清单。389 收藏 -
Go 1.25 会在 Linux 容器中参考 cgroup CPU 带宽限制并可能周期更新 GOMAXPROCS。本文说明如何用 containermaxprocs=0 关闭容器感知,并区分 updatemaxprocs=0 与显式 GOMAXPROCS 的边界。389 收藏 -
Go UUID 的 Parse 接受 32 位不带连字符的十六进制文本,是因为它同时兼容 raw hex 等非标准表示。本文解释 Parse 的输入边界,并说明接口严格校验时如何把宽松解析与业务格式规则分开。389 收藏 -
Go flac 读取 FLAC 时,StreamInfo 和其它元数据块属于流描述信息,音频帧才承载连续采样数据。本文按 Parse/ParseFile、New/Open、Next/ParseNext 的职责拆开说明选择方法。389 收藏 -
Go 的 url.Parse 只验证输入能否解析成 URL 结构,不会验证 DNS、TCP、TLS 或 HTTP 服务。本文用分层检查和可超时的 net/http 示例区分解析成功与地址可达。388 收藏 -
Go 项目新增依赖后,go.mod 已经变化但 -mod=vendor 仍然找不到包,通常是 vendor 目录和 vendor/modules.txt 没有同步。本文按检查、更新、复查三条线定位原因。388 收藏 -
Go 的 recover 只能在同一 goroutine 正在展开的 defer 中直接调用。本文把 panic 转成可返回、可记录的 error,并说明后台 goroutine 的恢复边界与常见误区。388 收藏