Go教程技术文章
-
Go 的 io/fs 使用统一的虚拟路径语法。本文说明 fs.ValidPath 如何拒绝空段、点段和首尾斜杠,怎样在 FS.Open 前接入校验,以及反斜杠、文件存在性和目录隔离的边界。444 收藏 -
Go os/exec 应固定可信程序入口、分项传递参数并限制业务字段。本文用原创导出函数解释参数与命令分离、取消和退出错误、输出生命周期、PATH及平台差异,不把无 shell 等同于任意输入安全。218 收藏 -
Go 调用外部命令时,Cmd.Stdout 和 Cmd.Stderr 是两条独立输出流。本文从只看到一条日志的常见现场出发,分别介绍 bytes.Buffer、StdoutPipe、StderrPipe 和 CombinedOutput 的选择、错误处理与并发读取边界。126 收藏 -
Go 标准库 flag 的 String 适合单值参数,但命令行工具经常需要重复传入 -include。本文比较单值、逗号分隔、flag.Func 和自定义 flag.Value 四种方案,给出可直接复用的切片收集实现,并说明默认值、空值和 FlagSet 隔离场景。292 收藏 -
Go 里把整数拼进响应、日志或协议帧时,strconv.AppendInt 可以直接追加到目标 []byte。本文说明怎样复用缓冲、提前规划容量,并分清中间字符串分配与切片扩容的边界。220 收藏 -
用 Go 的 base64.RawURLEncoding 生成不带等号的 URL 安全令牌,讲清字母表、编码解码、填充兼容和长度错误的处理边界。300 收藏 -
用 Go net/url 解析 URL 查询串,掌握 Query、Values.Get、Has、ParseQuery 在单值、多值、空值和错误处理上的边界。131 收藏 -
用 io.MultiWriter 把文件与 hash.Hash 组合为一个 Writer,单次读取源流即可落盘并计算摘要;通过完整示例解释写入顺序、复制及关闭错误、缓冲与字节层选择,避免返回无效结果。369 收藏 -
用 Go image/draw 按目标尺寸计算居中裁剪框,再将源图区域复制到缩略图画布,并排查边界、偏移与合成模式问题。234 收藏 -
Go 的 image.Decode 会根据已注册的解码器识别 PNG 或 JPEG。本文给出空白导入、格式返回、尺寸预检和文件位置复位的最小写法。231 收藏 -
区分 Go 文件 Write、File.Sync 与 Close 的职责,掌握关键文件写入时的持久化和错误处理顺序。248 收藏 -
Go 使用 archive/tar 解包时,先用 filepath.IsLocal 限制归档成员名,再区分目录、普通文件和链接条目,避免路径穿越与越界写入。230 收藏 -
用 archive/zip 的 FileInfoHeader 和 CreateHeader 保留 ZIP 条目的 Unix 权限、目录类型与可执行位,并说明读取复核、路径安全和跨平台边界。412 收藏 -
用 Go 的 os.File.Truncate 调整文件字节长度,区分缩短、扩展、I/O 偏移不变和 PathError 错误处理,附带可复用的最小示例与回归检查清单。193 收藏 -
Go io.TeeReader 可以在主流程单遍读取时,把同一批字节同步写给记录器或摘要计算器。本文解释无内部缓冲、写入错误转读错误和内存边界,并给出选择清单。454 收藏