Go语言技术文章
-
Golang · Go教程 | 2星期前 | 反射 · reflect · 标准库 · Go教程 · Go 反射 MapIter MapRange reflect.Value.SetIterValue map迭代
Go 反射遍历 map 时,可以用 reflect.Value.SetIterValue 把 MapIter 当前条目的值写入一个可写 Value。本文从目标 Value 的创建、MapRange 遍历到可赋值与 CanSet 边界,给出完整示例和选择建议。402 收藏 -
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 WebSocket 握手前应使用 websocket.Upgrader.CheckOrigin 精确校验 Origin。本文说明 Origin 与 Host 的边界、白名单写法、常见放行反例,以及来源校验与身份鉴权的区别。401 收藏 -
context.AfterFunc 的 stop 函数只负责解除回调关联,并不等待回调结束。本文用取消清理场景说明 true、false 的含义,以及如何等待已启动回调完成。401 收藏 -
Go Rows 关闭后 Next 返回 false,而 Err 不一定因主动关闭变成非 nil。用假设排障场景解释返回 Rows 前 defer Close 的所有权错误,并给出消费与关闭责任统一的函数写法。401 收藏 -
Go SQL事务可采用显式提交、延迟回滚兜底结构。本文以库存预留代码说明中间错误返回、ErrTxDone、清理异常与提交失败的处理,并解释事务上下文和盲目重试的风险。401 收藏 -
Go 精简容器中 time.LoadLocation 失败,通常是镜像缺少 IANA 时区数据库。本文按查找顺序说明安装 tzdata 与导入 time/tzdata 两种修复方案,并给出容器上线复查清单。401 收藏 -
用 Go 标准库 container/list 和 map 实现一个可运行的 LRU 缓存,说明访问命中、队首移动、更新和队尾淘汰之间的关系,并补充容量与并发边界。401 收藏