Go问答技术文章
-
Go 依赖出现 go.sum 校验不一致时,先区分 .mod 与源码 zip 的哈希,再记录 GOPROXY、GOSUMDB 和 GOPRIVATE,用同一模块版本对比代理与 direct,最后按来源修复而不是盲目删除 go.sum。238 收藏 -
Go plugin.Open 加载 .so 时,版本不匹配通常不是单看 Go 版本,而是宿主与插件的工具链、构建条件和共享依赖没有保持一致。本文按排查顺序定位原因,并给出统一构建方案。495 收藏 -
Golang · Go问答 | 1星期前 | CGO · 内存管理 · Go问答 · Go CGO unsafe.Pointer 指针传递 runtime/cgo.Handle runtime.Pinner
Go cgo 传指针最重要的不是指针类型,而是内存由谁分配、是否包含 Go 指针以及 C 是否会在调用返回后保存它。本文按临时借用、C 堆复制、runtime.Pinner 和 runtime/cgo.Handle 说明安全边界。124 收藏 -
围绕 Go database/sql 事务重试边界,说明怎样识别明确死锁错误、回滚完整事务、使用有限退避,并通过统一加锁顺序、幂等设计和提交不确定性避免把重试变成重复写入。119 收藏 -
Go Rows 关闭后 Next 返回 false,而 Err 不一定因主动关闭变成非 nil。用假设排障场景解释返回 Rows 前 defer Close 的所有权错误,并给出消费与关闭责任统一的函数写法。401 收藏 -
Go binary.Read 按协议字段顺序和字节序读取数据,不会自动把结构体隐式对齐当成报文字节。本文用固定头、显式保留字段、长度检查和跨平台解析说明如何定位结构体对齐误解。335 收藏 -
Go database/sql 遍历 Rows 时,Scan 失败要及时停止读取并关闭结果集;循环结束后还要检查 Rows.Err,区分行转换错误与驱动读取错误。217 收藏 -
Go encoding/hex 的 DecodeString 按两个十六进制字符组成一个字节,输入为奇数长度时会返回 ErrLength。本文结合入口校验、错误区分和协议选择,说明怎样处理半字节输入。191 收藏 -
Go CertPool 追加 PEM 根证书需分开处理读取错误与解析结果。说明空池、系统池副本和布尔返回值的范围,提供完整示例,并区分追加成功与 TLS 服务器验证。246 收藏 -
Go encoding/base64 返回 CorruptInputError 时,怎样把错误值还原为零基字节偏移,并区分非法字符、填充错误、尾部垃圾和 Strict 模式错误。235 收藏 -
Go TLS 客户端默认使用主机信任根,不会凭空信任自签名根证书。本文解释 RootCAs 的来源,并给出保留系统根证书、追加私有根证书的安全写法。189 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 文件读取 · Go问答 · Go archive/zip Store DEFLATE File.Open FileHeader.Method File.OpenRaw
Go archive/zip 的 FileHeader.Method 表示 ZIP 条目的压缩方法,不是文件格式。本文区分 Store=0 与 Deflate=8,说明 File.Open 的透明解压和校验、File.OpenRaw 的原始字节边界,并给出未知方法、ZIP64 尺寸和资源关闭的处理建议。241 收藏 -
Go gzip.Reader 默认合并多成员内容,Multistream(false) 在当前成员结束时停止。用完整内存示例比较两种读取方式,说明 Reset 复位、ByteReader 边界和资源关闭责任。211 收藏 -
讲清 Go io/fs.Sub 如何把嵌入文件系统的子目录映射为新根,并结合 fs.ValidPath、fs.ReadFile 与业务白名单处理路径边界;同时说明它不是符号链接安全沙箱。466 收藏 -
Go tar 解包时不要直接把 Header.Name 拼到目标目录。本文用 filepath.IsLocal 拒绝绝对路径和父目录,说明 ErrInsecurePath、filepath.Join、目录项以及 Linkname 的边界,并给出可复用的安全解包骨架。432 收藏