Go语言技术文章
-
bytes.Buffer.WriteByte 的 error 固定为 nil 并不是漏掉了错误处理,而是为了匹配 bufio.Writer 的接口形状。本文说明单字节写入、字符写入与容量边界的区别。402 收藏 -
Go Humanize 的 Bytes 使用 1000 进位并输出 kB、MB,IBytes 使用 1024 进位并输出 KiB、MiB。本文用同一输入解释两者的差异、舍入规则和 N 变体选择,避免容量日志与接口展示混用单位体系。402 收藏 -
go-chart 的 HideXAxis、HideYAxis 与 chart.Hidden() 作用对象不同:前者控制坐标参照的显示,后者控制单条序列的绘制。本文用代码和选择表说明两者的边界。402 收藏 -
用 fs.FileInfo 包装类型实现 tar.FileInfoNames 的 Uname 与 Gname,让 FileInfoHeader 写入固定的归档用户名和组名,并说明 UID、GID、路径和内容写入的边界。402 收藏 -
Go crypto/aes 的临时分配通常来自重复初始化、Seal/Open 每次从 nil 切片扩容以及热路径中的字符串转换。本文用 AES-GCM 说明如何复用 AEAD、目标缓冲区和 nonce 存储,并划清别名与 nonce 安全边界。402 收藏 -
Go encoding/csv 默认按规范 CSV 解析,遇到历史文件中的裸引号或未成对引号会返回解析错误。本文用 Reader.LazyQuotes 兼容读取这类记录,并说明字段数检查、ParseError 定位和不能由 LazyQuotes 解决的清洗边界。402 收藏 -
Go 的 flate.NewReader 返回 io.ReadCloser,读取结束后要关闭解压层;如果底层是文件、连接等可关闭资源,还要由拥有者单独关闭。本文说明两层资源的责任边界、defer 顺序、循环处理和 Reset 复用场景。402 收藏 -
Go 的 database/sql 在 Rows.Next 返回 false 时并不等于查询成功结束,仍需检查 Rows.Err 区分自然读完、驱动错误和上下文取消。本文给出可复用的查询循环和边界处理方式。402 收藏 -
用同一段 Go 示例验证 fmt.Appendf 的追加语义、容量增长与格式占位符边界,给需要构造日志或协议字节流的代码一个可复用的写法。401 收藏 -
Go 处理带 BOM 的 UTF-16 文件时,可以用 golang.org/x/text 的 unicode 与 transform 按 BOM 识别大小端,再流式写出 UTF-8。本文给出临时文件替换方案,并说明缺少 BOM、乱码和并发写入的边界。401 收藏 -
解释 Go http.Cookie 同时设置 MaxAge 与 Expires 时的序列化结果、浏览器优先级,以及持久化、会话和删除 Cookie 的配置排查方法。401 收藏 -
Go 中自定义 RoundTripper 时,不要用空的 http.Transport 替换默认传输层。本文说明如何通过类型断言和 Clone 保留 ProxyFromEnvironment、连接复用与响应体边界。401 收藏 -
filepath.WalkDir 的回调参数是 fs.DirEntry,不是旧版 Walk 的 fs.FileInfo。本文说明 Type、IsDir 和 Info 的区别,演示如何判断目录、普通文件、特殊文件与符号链接,并处理 Info 失败和遍历错误。401 收藏 -
Go httputil.ReverseProxy 的 SetURL 会让出站 Host 默认跟随目标主机。本文用 Rewrite 先修改目标 URL,再保留入站 Host,并说明 X-Forwarded-Host、路径拼接与安全边界。401 收藏 -
Go 程序里的相对路径不是相对源码目录,而是相对进程当前工作目录。本文按 os.Getwd、filepath.Abs、显式配置根目录和部署检查清单的顺序,定位 IDE、测试、脚本与服务启动时的路径失效问题。401 收藏