Go教程技术文章
-
用 Go 的 os.ReadDir 读取目录后,如何按目录、普通文件和其他类型筛选?本文从 DirEntry 的 IsDir、Type、Info 讲起,并说明目录级错误、单项 Info 错误和大目录分批读取的处理方式。290 收藏 -
Go 的 time.Timer.Stop 返回值表示定时器是否被成功停止,不等于 t.C 是否发生过接收。本文用取消、超时和并发收尾示例区分这两个事实,并说明 Go 1.23 之后的通道语义。290 收藏 -
从 io.Copy 的接口选择入手,拆解 os.File.ReadFrom 如何走 ReaderFrom 快路径,以及短读、EOF 和部分写入时该怎样验证。289 收藏 -
用 log/slog 的 slog.Group 组织请求与数据库字段,配合 TextHandlerOptions 核对嵌套键的最终输出,避开参数错位和重复前缀。289 收藏 -
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 命令行读取密码时,可用 golang.org/x/term.ReadPassword 关闭本地字符回显。本文比较不同输入方式,并说明非终端错误、换行处理和敏感字节清理。288 收藏 -
Go filepath.Rel 遇到绝对路径和相对路径混用时,先用 filepath.Abs 统一计算基准,再处理跨根目录、../ 越界、符号链接和 URL 路径等边界。288 收藏 -
用一个可复用的 Go 上传请求构造器讲清 multipart.Writer.SetBoundary 的正确调用顺序、字符与长度限制、Content-Type 同步方式,以及 Close 收尾错误处理。288 收藏 -
Go pem.Decode 找不到下一个 PEM 块时会返回 nil,并把未找到块的整段输入原样放到 rest。本文说明这种设计如何作为终止信号,并给出连续读取多个 PEM 块时避免重复处理和死循环的写法。288 收藏 -
Go 的 JSON 联合字段可以先用 RawMessage 保留 payload,再按 type 选择具体结构体二次解析。本文给出分派结构、错误处理和适用边界。288 收藏