Go语言技术文章
-
Go 的 CertPool.AppendCertsFromPEM 返回 true 只表示至少一个 PEM 证书解析成功,并不代表所有证书有效或已经建立信任链。本文拆解 true/false 边界,给出逐块诊断和 Certificate.Verify 的分层判断方法。445 收藏 -
Go 1.24 起可以用 http.Transport.Protocols 显式区分 HTTP/1、TLS 上的 HTTP/2 与未加密 HTTP/2。本文给出仅 HTTP/1 和 HTTP/1 加 TLS HTTP/2 两种配置,说明如何不加入 UnencryptedHTTP2,以及零值、ForceAttemptHTTP2 和版本边界。445 收藏 -
Golang · Go问答 | 1个月前 | 错误处理 · go · 数据库 · 排查 · SQL · rows.Close rows.Next Rows.Err Go database/sql 空结果
Go 查询 database/sql 时,Rows.Next 返回 false 不一定代表空结果。本文用一个分页查询故障拆开 Next、Err、Close 的职责,给出可复用的遍历模板、异常定位顺序与资源收尾检查。444 收藏 -
Go 1.22 引入的 slices.Concat 可以按顺序合并多段同类型切片。本文核对它的泛型签名、空输入返回 nil、结果切片与源切片的隔离关系,并给出容量和自定义切片类型的判断方法。444 收藏 -
Go 交叉编译开启 cgo 后找不到目标编译器,通常是只设置了 CGO_ENABLED 而没有准备匹配 GOOS/GOARCH 的 CC、目标头文件、运行库和链接器。本文按变量、工具链和报错层次给出排查方法。444 收藏 -
Go 表驱动测试加上 t.Parallel 后,多个子测试可能读到同一个循环变量。本文解释暂停时机、Go 版本差异、局部绑定写法和 -race 排查边界。444 收藏 -
Go 使用 json.Decoder 时,io.EOF 通常表示输入流已经正常结束,不等于 JSON 格式错误。本文用代码区分 EOF、空输入、UnexpectedEOF 和真正语法错误。444 收藏 -
Go test ./... 返回很快并不一定是测试没执行,本文区分本地目录模式与包列表模式,说明如何识别 (cached)、用 -count=1 强制重跑,并选择 GODEBUG 与 testcache 清理范围。444 收藏 -
Go zip.NewReader 不能直接接收普通 io.Reader。本文用 bytes.Reader 和临时文件说明如何提供 ReaderAt、准确 size,并正确处理 ZIP 成员资源。444 收藏 -
用 Go testing.T Cleanup 分层管理共享 fixture 与子测试资源,配合 T.Run 的等待边界协调 Parallel 测试,避免清理过早和闭包串数据。444 收藏 -
用 Go iter.Pull 把 iter.Seq 推送式迭代器转换成按需调用的 next 函数,说明 stop 的释放责任、提前退出和空序列边界。444 收藏 -
Go 的 time.Parse 不认识 YYYY-MM-DD 这类常见日期格式符,它用 2006-01-02 这组参考时刻来描述布局。文章从解析失败的报错入手,给出最小修复、UTC 与业务时区的边界、ParseError 的定位字段和可回归的日期测试,避免日期字段在接口或报表中悄悄偏移。443 收藏 -
用一个可复现的 CSV 导入故障,讲清 encoding/csv 的 FieldsPerRecord、ErrFieldCount、ParseError 和 FieldPos 如何配合定位最后一行字段数不一致。443 收藏 -
gopls 0.23 移除了 fix、inspect 和 bug 子命令。本文按实际迁移边界说明 codeaction、remote、serve 的职责变化,并处理 importsSource 与 analyzer 配置兼容问题。443 收藏 -
Go 泛型约束允许某些类型,不代表一次调用可以让不同实参各自选择类型。本文从类型推断、无类型常量和可赋值规则入手,定位接口约束通过但调用仍类型不匹配的原因。443 收藏