Go教程技术文章
-
reflect.TypeFor 只负责获取泛型类型的 reflect.Type,受限目录读取应交给 Go 1.24 的 os.OpenRoot 与 os.Root.Open。本文把两者组合成一个可复用的相对路径读取示例,并说明版本、路径和资源关闭边界。292 收藏 -
Go 的 csv.Reader 默认会用第一条记录的字段数约束后续行,遇到缺列或多列就返回 ErrFieldCount。本文从故障现场、根因和修复动作出发,说明如何允许不定列数,并把缺列、额外列和真正的 CSV 格式错误分开处理。291 收藏 -
通过包装Go RoundTripper,在独立Header副本中注入Context追踪标识,保留底层响应与错误,并明确并发、Body和重定向目的端的处理边界。291 收藏 -
Go 循环里反复调用 time.After 是否需要改成 Timer?本文按单次超时、可复用等待和固定周期三种工作流给出选择,并说明 Go 1.23 之后的计时器回收与旧版本兼容写法。291 收藏 -
用一个可复用的 http.Client 处理 Transport、重定向、Cookie 和 Timeout 四类可选配置,先看零值行为,再按失败边界设置策略和资源回收。291 收藏 -
用 Go 的 os.ReadDir 读取目录后,如何按目录、普通文件和其他类型筛选?本文从 DirEntry 的 IsDir、Type、Info 讲起,并说明目录级错误、单项 Info 错误和大目录分批读取的处理方式。290 收藏 -
Go 的 time.Timer.Stop 返回值表示定时器是否被成功停止,不等于 t.C 是否发生过接收。本文用取消、超时和并发收尾示例区分这两个事实,并说明 Go 1.23 之后的通道语义。290 收藏 -
Ristretto 不按缓存条目数量限制容量,而是通过 MaxCost 和 Set 的 cost 参数管理总成本。本文用统一成本单位为不同大小的对象分配预算,并说明 Wait、异步写入和淘汰边界。289 收藏 -
使用 image.NewRGBA 创建可修改图像时,先用 image.Rect 明确坐标范围,再通过 SetRGBA 写入像素;需要批量处理时理解 PixOffset 与 Stride,遇到非零原点和 SubImage 也不容易越界。289 收藏 -
Go encoding/hex.AppendEncode 会把字节编码为十六进制文本并追加到已有切片。本文从目标切片容量、返回值、空输入和 API 选择几个边界说明如何稳定复用缓冲区。289 收藏 -
GoLLRB 的自定义对象只需实现 llrb.Item 的 Less 方法,但比较规则必须稳定且可区分。本文用优先级加 ID 的复合键说明插入、等价更新、查询和范围遍历的写法与边界。289 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 文件读取 · csv · Go教程 · 数据导入 · csv Go Reader encoding/csv FieldsPerRecord 变长记录
Go encoding/csv 默认会按首条记录固定字段数,遇到短记录或长记录时可能返回 ErrFieldCount。本文说明如何在读取前设置 FieldsPerRecord 为负值接受变长记录,并在业务层安全处理缺省字段,同时保留 CSV 语法错误和底层读取错误。289 收藏 -
Go time.AfterFunc 会在延迟到期后异步执行回调。本文说明如何保存返回的 *time.Timer、在回调开始前调用 Stop、判断 Stop 的返回值,并处理取消与回调并发时的资源边界。289 收藏 -
Go pem.Decode 找不到下一个 PEM 块时会返回 nil,并把未找到块的整段输入原样放到 rest。本文说明这种设计如何作为终止信号,并给出连续读取多个 PEM 块时避免重复处理和死循环的写法。288 收藏 -
Go 的 JSON 联合字段可以先用 RawMessage 保留 payload,再按 type 选择具体结构体二次解析。本文给出分派结构、错误处理和适用边界。288 收藏