Go语言技术文章
-
database/sql 的 Scan 只会处理文档列出的常见目标类型或 Scanner。本文用自定义金额结构体构造最小复现,再通过 Scanner 处理 int64、[]byte 和 NULL,定位并修复类型转换错误。283 收藏 -
Go ast.ImportSpec.End 不自动包含关联的行尾注释。本文用完整解析示例区分导入项与附注释片段,解释 ParseComments、EndPos、字节偏移及源码工具中的范围选择。176 收藏 -
MoveBefore 传入同一个节点时本来就不会改变链表;本文从节点身份、所属列表和目标位置三个条件解释无变化现象,并给出可直接套用的排查写法。460 收藏 -
Go database/sql 事务提交后查询不到数据,通常不是 database/sql 缓存了旧结果,而是写入或提交错误被忽略、上下文取消、读写 DSN/schema 不一致、查询条件变化或读到了尚未同步的副本。本文用最小复现固定 BeginTx、Exec、Commit 和读回,再按六类分支定位问题。184 收藏 -
Go ast.FieldList.NumFields 统计参数或字段数量,List 长度统计声明组节点。本文用分组参数解释差值,说明匿名项、空列表和可变参数的计数语义,以及静态分析工具的调整方式。366 收藏 -
Go database/sql 的 rows.Next 返回 false 只表示遍历结束,不能直接当作成功;本文用一个可复用示例说明如何通过 rows.Err 捕获迭代错误,并区分 Query、Scan 与 Close 的诊断边界。109 收藏 -
database/sql 查询提前返回时,如果 Rows 没有关闭,连接可能持续处于使用中。本文用 MaxOpenConns=1 的最小测试说明阻塞现象,并给出安全读取与排查方法。145 收藏 -
Go token.File.Lines 的返回切片应按只读数据使用。本文解释切片赋值与独立复制的区别,给出展示数据变换及 SetLines 输入隔离示例,说明源码分析任务中的所有权与并发约束。382 收藏 -
解释 Go encoding/json 中 nil 切片、空切片与 omitempty 的 JSON 输出差异,并给出稳定列表接口字段形状与回归测试写法。141 收藏 -
time.Time.Year 返回公历年,而 ISOWeek 返回 ISO 8601 的周所属年与周号。本文用年初年末边界说明两者为何不同,并给出正确的周统计键和回归测试写法。373 收藏 -
Go JSON 时间字段解析失败常源于输入表示与 time.Time 的 RFC3339 契约不符。本文给出三种输入的最小复现,说明旧格式的显式转换、时间戳单位、空值规则与迁移选择。330 收藏 -
Go encoding/json 遇到 NaN、+Inf 或 -Inf 时会返回 UnsupportedValueError。本文用最小示例区分错误类型,并给出序列化边界的有限浮点检查与业务取值方案。324 收藏 -
Go encoding/json 解码到 map[string]any 时,JSON 数字默认映射为 float64。本文用最小复现解释原因,并给出结构体与 Decoder.UseNumber 两种保留数字语义的处理方式。245 收藏 -
Go multipart.Part.FormName 只返回 form-data 分段的 name,attachment 含有同名参数也会返回空字符串。本文用原创示例说明通用参数解析、错误处理与接收策略,避免将附件元数据误当表单字段。114 收藏 -
Go plan9obj.Section 的两个读取者应分别调用 Open,以隔离各自的 Seek 游标。本文对比共享读取器、独立 Open 和 ReadAt,给出窗口读取示例,并说明底层文件寿命与关闭责任。390 收藏