Go问答技术文章
-
用一个可复现的 CSV 导入故障,讲清 encoding/csv 的 FieldsPerRecord、ErrFieldCount、ParseError 和 FieldPos 如何配合定位最后一行字段数不一致。443 收藏 -
slices.Grow 的承诺是为接下来的 n 个元素预留至少够用的空间,不是把容量固定成某个数字。理解 len、cap、n 与 append 的关系,才能正确判断是否发生了额外分配。252 收藏 -
上传接口只需要判断图片格式和尺寸时,不必立刻解码整张像素数据。本文用 image.DecodeConfig 说明格式探测、Config 返回值、流位置和大文件校验的边界。140 收藏 -
用 Go crypto/rand.Int 生成安全随机下标时,上界必须是正数且结果不包含上界;文章用最小代码说明无偏分布、big.Int 转换和 Reader 错误处理边界。269 收藏 -
解释 Go math/big.Int.SetBytes 的大端无符号语义,结合高位字节、负数编码与字节序转换示例,给出解析二进制整数时的检查边界。455 收藏 -
Go 测试里临时目录既要自动清理,又要在失败时保留现场,关键是把清理责任绑定到正确的测试层级。本文用 t.Cleanup、t.TempDir 和子测试演示一次注册、按层执行与失败验收。141 收藏 -
用 Go 1.23 新增的 os.CopyFS 把 embed.FS 复制到本地目录,说明目标目录创建、已有文件冲突、fs.ErrExist 判断和权限边界。299 收藏 -
go/ast.Preorder 返回一个按深度优先顺序遍历语法树的迭代器。本文从源码扫描器的高压场景出发,拆解节点顺序、break 提前停止和解析错误的边界,并给出可复查的实现方式。148 收藏 -
用 testing.T.Context 把测试超时信号传给后台 goroutine,并配合 Cleanup 等待资源退出,避免测试结束后仍有后台任务运行。420 收藏 -
time.ParseDuration 能解析带单位的时长,但 Duration 本质是 int64 纳秒数。本文从配置输入、解析错误和范围校验三个环节说明如何避免极大值溢出,并给出安全回退写法。194 收藏 -
Go 里只拆一次字符串时优先考虑 strings.Cut;需要保留全部片段或处理空字段时使用 strings.Split。本文用请求头和配置值的例子说明两者的返回值、边界与选择规则。492 收藏 -
text/template 默认会把缺失 map 键静默变成空值。本文用 missingkey=error 配合模板执行,定位字段拼写错误发生的阶段,并给出可运行的测试验收方法。286 收藏 -
Golang · Go问答 | 2星期前 | HTTP · go · 性能排查 · Go net/http 连接泄漏 ConnState StateNew StateActive StateClosed
Go 的 net/http.Server.ConnState 能把连接状态变化暴露出来。本文用 StateNew、StateActive、StateIdle 与 StateClosed 计数,区分正常长连接、慢请求和连接泄漏,并给出可运行的核对方法。211 收藏 -
用 Go flag.FlagSet 处理子命令参数时,未知参数、缺少参数值和 -h 不能混在一起判断。本文用 ContinueOnError、Usage 和 Parse 的返回结果拆开这三类分支。275 收藏 -
Go 1.27 允许结构体字面量直接使用嵌入结构体提升字段作为键。本文用 Gopher 和 Habitat 示例说明字段选择器规则、与旧写法的兼容边界,以及如何用 go.mod 和 go test 做编译检查。362 收藏