Go语言技术文章
-
Golang · Go教程 | 1个月前 | 标准库 · 文件读取 · Go教程 · 错误排查 · Go ReadAll read encoding/csv FieldsPerRecord ErrFieldCount
Go encoding/csv 的列数错误不是等到 ReadAll 结束才检查,而是在读取具体记录时由 Read 逻辑发现。本文对比 Read 与 ReadAll 的返回值、FieldsPerRecord 三种语义,并给出定位故障行的处理方式。315 收藏 -
Go fuzz 测试遇到 []byte 被修改、后续用例结果漂移时,关键是建立输入所有权:保留原始快照,把可变操作放到独立副本上,并检查返回切片与缓存是否复用底层数组。315 收藏 -
用 Go 的 reflect.VisibleFields 和 StructTag.Lookup 生成字段映射,再以 reflect.Type 为键缓存不可变元数据。文章给出完整实现、并发取舍、嵌入字段处理和实际取值示例。315 收藏 -
讲解如何把 Go 旧式 b.N 基准测试迁移到 testing.B.Loop,处理一次性准备、循环内输入重置、计时器控制、自定义指标和结果对比,并说明不能混用的边界。315 收藏 -
Go 下载私有模块时出现 sum.golang.org 校验错误,通常是私有模块匹配规则没有配置,或把代理、校验数据库、仓库凭据三个问题混在了一起。本文按错误层级给出 GOPRIVATE、GONOSUMDB、GONOPROXY 的配置和排查方法。315 收藏 -
Go 文件关闭、EOF 和缓冲读取属于不同状态。通过直接读取、缓冲层和提前关闭的示例,解释错误差异的来源,并用明确的资源归属与错误链分类修复导入流程。315 收藏 -
Go 1.21 引入的一次性值函数适合把一次性计算封装成并发安全的惰性值。本文从配置快照加载场景出发,说明它的最小写法、panic 语义、错误值处理、旧版本兼容和上线前检查边界。314 收藏 -
runtime/metrics.Read 返回 Float64Histogram 后,P99 不能直接对 Buckets 求平均。本文用 Buckets 与 Counts 的累计权重定位分位桶,并说明负无穷、正无穷和样本不足时的处理边界。314 收藏 -
从请求 Context 派生查询超时,正确使用 QueryContext、关闭结果集并区分取消错误,定位 Go 数据库超时后连接仍被占用的原因。314 收藏 -
Go 服务 CPU 飙高、内存上涨或请求变慢时,按症状选择 CPU、heap、goroutine、block、mutex profile,再用 top、list 和对照采样确认热点。314 收藏 -
Go 渲染 HTML 时,应使用 html/template 并让普通用户输入保持 string 类型。本文说明上下文自动转义、属性与 URL 边界,以及 template.HTML 只能承载可信片段的使用条件。314 收藏 -
讲清 Go atomic.Value 零值 Load、首次 Store 类型确定、sync.Once 懒初始化和不可变配置快照之间的边界,避免 nil 与类型不一致 panic。314 收藏 -
strings.Map 返回负值时会删除对应的 Unicode 字符,但 len 统计的是字节数。本文用一个 Go 文本清洗器说明如何统计删除数量、判断空结果,并区分合法与非法 UTF-8 输入。314 收藏 -
Go internal 的可见性按导入路径中的父树判断,而不是按物理目录、仓库或 go.work 判断。本文用多模块示例拆开允许范围、排查命令与三种包边界修复方案。314 收藏 -
用 Go build -overlay 和 Replace JSON 映射临时替换源码,掌握 go list、构建缓存、go run 与 go test 的适用边界。314 收藏