Go语言技术文章
-
Go signal.Notify 收不到 SIGTERM 时,先检查通知 channel 是否有缓冲、是否持续读取,再核对 systemd 或容器托管的真实 PID,并区分 SIGTERM 与无法捕获的 SIGKILL。226 收藏 -
Go 解析带时区字符串时,布局要使用 -07:00 或 -0700 这样的数值偏移格式。本文说明 time.Parse 如何保留原始偏移、没有时区时为什么会按 UTC 处理,以及什么时候应该用 ParseInLocation 加载业务时区。226 收藏 -
Go map 的 value 是指针时,单独判断 v == nil 会混淆缺失键和已保存的 nil。用 comma-ok 先判断键是否存在,再判断指针值,map[string]any 还要留意 typed nil。226 收藏 -
解释 Go sort.SliceIsSorted 遇到 NaN 时看似判断异常的原因,拆开相邻比较与 IEEE 754 语义,并给出拒绝、过滤或显式排序 NaN 的一致比较器写法。226 收藏 -
用 Go bufio.Writer.AvailableBuffer 配合 append 和 strconv.AppendInt 构造短记录,减少循环中的临时切片分配,并说明容量不足、切片生命周期、Flush 和 Go 版本兼容边界。226 收藏 -
Go build 出现疑似缓存未更新时,先确认 GOCACHE 与构建输入,再用 -a、go clean -cache、gocacheverify 和 gocachehash 分层定位,避免误删模块缓存。226 收藏 -
以逗号分隔标签的规范化函数为例,用 Go Fuzz 检查编解码往返、幂等、UTF-8、排序与去重性质,并给出种子语料、运行预算和失败输入回归方法。226 收藏 -
分页接口里的 page、size 不是普通字符串:负数、超大整数和乘法溢出会把查询范围、内存占用甚至数据库压力一起带偏。本文用 Go 标准库拆开参数解析、上限校验、LIMIT/OFFSET 计算和验收清单。225 收藏 -
os.ReadFile 读配置失败时,问题通常不在读取动作本身,而在工作目录、路径拼接和错误分类。本文用一段可运行的 Go 示例拆开定位顺序,并给出能保留原始原因的错误返回方式。225 收藏 -
Go 的 io.SectionReader 可以把大文件映射成一个固定的字节窗口。本文用原创示例说明如何按偏移和长度读取、如何区分 ReadAt 与 Seek,以及短读、EOF 和边界校验怎么处理。225 收藏 -
Go 的 go、toolchain 指令和 GOTOOLCHAIN 并不是同一层配置:本文用实际选择场景拆开最低版本、建议版本、PATH 查找和自动下载的边界,帮助你稳定配置本地与 CI 工具链。225 收藏 -
Go select 同时命中多个 ready case 时不会按书写顺序执行,而是从可继续的通信中选择一个。本文解释 ready、default、关闭通道和优先级改写之间的边界。225 收藏 -
Go unsafe.Slice 可以从 *byte 指针和长度构造共享底层内存的字节切片,但不会复制、扩容或管理内存。本文说明 nil 与零长度、真实对象边界、指针生命周期和读写权限的使用契约。225 收藏 -
Golang · Go教程 | 3星期前 | 文件处理 · Go教程 · Go archive/tar Go tar归档头 archive/tar Reader.Next Go读取tar文件 Go解包元数据
用 archive/tar.Reader 的 Next 逐条读取 tar 归档头,解释 Header 元数据、正文读取、目录跳过以及 EOF 和不安全路径处理。225 收藏 -
Go 处理 multipart/form-data 时,不必手写字符串切割 Header。使用 Part.FormName 读取 name,使用 FileName 判断文件字段,再按场景选择 MultipartReader 或 ParseMultipartForm。225 收藏