Go语言技术文章
-
Go 指针接收者方法能否由值变量调用,取决于方法集和可寻址性。本文用方法集、接口实现与函数返回值边界解释报错原因,并给出接收者设计建议。331 收藏 -
围绕 Go sync.Pool 结果不稳定的常见现象,解释 Get 的任意取值、对象自动移除、初始化清理、所有权边界和业务状态选型,给出可复用的缓冲区排查思路。331 收藏 -
Golang · Go教程 | 4天前 | 标准库 · 错误处理 · csv · Go教程 · Go CSV导入 encoding/csv csv.Reader FieldsPerRecord ErrFieldCount
Go csv.Reader 用 FieldsPerRecord=-1 可以接收列数不固定的记录;如果业务仍需识别异常列宽,则应保存每次 Read 返回的 record,并在固定列宽模式下同时保留 ErrFieldCount。本文区分字段数错误、部分解析错误和 io.EOF,给出可审计的导入循环。331 收藏 -
说明 Go net/url.URL 的缺省字段、查询空值与业务补丁的区别,给出保持、设置、删除三态示例,并处理 ForceQuery、Fragment 和编码提示的边界。331 收藏 -
Golang · Go教程 | 2天前 | 并发 · 标准库 · Context · 资源管理 · Go教程 · Go Goroutine 资源清理 context取消 context.AfterFunc
本文用一个可复用的最小示例说明 Go context.AfterFunc 如何在上下文取消后安排异步清理,重点解释 stop 返回值、清理完成通知、竞态和幂等边界。331 收藏 -
用 Go database/sql 调用带 OUT 或 INOUT 参数的存储过程时,掌握 sql.Out、Dest 和 In 的绑定关系,配合 ExecContext 与驱动能力排查,避免输出值无法回写。330 收藏 -
Go JSON 时间字段解析失败常源于输入表示与 time.Time 的 RFC3339 契约不符。本文给出三种输入的最小复现,说明旧格式的显式转换、时间戳单位、空值规则与迁移选择。330 收藏 -
io.MultiReader 会把多个 Reader 顺序拼成一条流,中间 Reader 的 EOF 会被内部消费,调用方只能看到最终 EOF。本文用包装 Reader 记录每个文件的结束事件和字节数,并说明错误处理、文件关闭与不应合并的场景。329 收藏 -
Go fmt.Appendf 可以把格式化结果直接追加到已有 []byte,减少 fmt.Sprintf 先生成字符串再 append 的中间路径。本文从缓冲区复用、容量准备、专用追加函数和基准测试讲清适用边界。329 收藏 -
Go go/ast.Inspect 得到空结果时,通常不是遍历器失效,而是解析结果没有目标节点、回调返回 false 提前剪枝,或统计逻辑忽略了实际节点类型。本文按根节点、回调返回值和 nil 收尾调用拆解这些边界。329 收藏 -
Go net.Dialer.Control 提供了真正拨号前接触底层连接的入口。本文用 syscall.RawConn.Control 说明如何在回调内读取或设置 socket 参数、传递错误,并处理网络名变化与文件描述符生命周期边界。328 收藏 -
Go 的 gob 同时遇到 GobEncoder 和 BinaryMarshaler 时,会优先调用 GobEncoder。本文从接口优先级、值与指针方法集、错误处理和持久化版本四个方面说明如何稳定控制编码路径。327 收藏 -
Go go/types.Config 看起来不生效,通常是配置没有传给同一次 Check、文件集合不完整、Importer 缺失,或 types.Info 没有初始化。本文按四个对照点定位,并给出可复用的 Config.Check 示例。327 收藏 -
Go iter.Pull2 把返回键值对的 iter.Seq2 转成 next 和 stop 两个函数,适合逐项拉取、限量读取和提前退出。本文用 maps.All 说明结束信号、defer stop、零值返回以及并发调用边界。326 收藏 -
sql.NamedArg 只是把参数名称和值交给 database/sql,能否按名字绑定还取决于驱动的占位符语法和 NamedValueChecker 等接口。本文拆开参数转换链,说明为什么有些驱动必须改用位置参数,以及如何保持参数化查询。325 收藏