Go语言技术文章
-
Go 读取 CSV 时出现逗号字段错位,通常是把字段内容里的逗号当成了分隔符,或输入没有遵守引号规则。本文用 encoding/csv 说明 Reader、FieldsPerRecord、ParseError 和 Writer 的正确处理方式。109 收藏 -
Go 1.27 的 database/sql.ConvertAssign 主要面向数据库驱动实现。本文说明如何在 RowsColumnScanner.ScanColumn 中复用 Scan 的类型转换规则,正确传递 ScanContext,并处理 NULL、溢出、Scanner、EOF 和资源关闭边界。109 收藏 -
用 slog.NewLogLogger 把旧 log.Logger 调用桥接到 slog.Handler,说明固定级别、Handler.Enabled 过滤、文本输出和结构化字段的边界。109 收藏 -
Go bloom 的容量参数对应预期插入量,不是可以无限增长的硬盘空间。本文解释容量不足后误判率为什么升高,如何理解 m、k、n 的关系,并给出容量预留、分段过滤器、重建与回源降级的工程取舍。109 收藏 -
Go archive/zip 写完条目后如果没有调用 Writer.Close,ZIP 末尾可能没有中央目录,读取端就会报归档损坏。本文说明 Close 的作用、正确收尾方式,以及如何保留 Close 和底层文件的真实错误。109 收藏 -
Go database/sql 的 rows.Next 返回 false 只表示遍历结束,不能直接当作成功;本文用一个可复用示例说明如何通过 rows.Err 捕获迭代错误,并区分 Query、Scan 与 Close 的诊断边界。109 收藏 -
os.File.Sync 返回成功仍读不到预期内容时,按写入完整性、读回位置、目录项和底层存储四层排查,避免把文件同步误认为事务提交。109 收藏 -
Go 中无缓冲结果 channel 如果没有接收方,发送 goroutine 会一直等待。本文用一个具体的结果返回场景说明提前返回为何造成泄漏,并给出取消发送、容量为一的缓冲和通道所有权边界的处理方式。108 收藏 -
用 strings.CutPrefix 安全移除 Go 字符串的可选前缀,区分未命中、空结果和空前缀,并给出兼容旧版本的 HasPrefix 加切片写法。108 收藏 -
Go 1.27 为 go doc 增加 package@version 查询形式,可以在不修改当前 go.mod 的情况下读取指定模块版本的包文档。本文说明如何定位到具体符号、选择展示选项,并拆分工具链、路径和代理导致的失败。108 收藏 -
Go uuid.Parse 对 UUID 十六进制大小写不敏感,但会区分长度、连字符、前后空白和其他格式边界。本文说明 Parse、Validate 与 String 的配合方式,帮助排查请求参数解析失败。108 收藏 -
Go fix embedlit 可简化嵌入字段初始化,本文说明语言版本、字段路径和已有嵌入值的输入边界,用源码计数区分可读性收益与性能结论。108 收藏 -
Go 集成 cel-go 时,int 与 double 混合表达式可能在 Compile 阶段失败。本文按类型检查、算术运算、跨类型比较和显式转换拆开排查,给出可落地的修复选择。108 收藏 -
Go x/text/language 的 Matcher.Match 返回值可能带有 -u-rg- 等扩展字段,这是把用户地区设置带入匹配结果的设计。本文区分返回 Tag 与 index 的用途,并给出资源绑定示例。108 收藏 -
说明如何填写 Gonum optimize.Problem.Grad 并配置 BFGS,对比解析梯度、数值差分与无梯度方法,解释隐藏函数求值、停止状态和性能判断。108 收藏