Go教程技术文章
-
Go 1.25 中可以用 runtime/debug.SetCrashOutput 把未处理 panic 和致命错误追加写入单独文件。本文用一个可运行的崩溃留证流程,说明文件轮转、监控进程接收和恢复边界。216 收藏 -
用 Go 的 io.CopyN 处理固定长度读取时,区分完整复制、短读 EOF 与底层读取错误,并给出可验证的判断代码。213 收藏 -
Go 1.21 引入的 clear 可以快速清空 map,但它解决的是元素清理,不是所有内存都立刻归还。本文用临时缓存场景拆解 clear、重新 make 和逐项删除的差别,再用基准与运行时指标确认容量复用是否真的适合当前代码。211 收藏 -
处理 multipart/form-data 时,不必把上传文件全部读入内存。本文用 NextPart 与 NextRawPart 展示如何按字段读取、跳过文件内容,并说明文件名解码和边界错误的判断方法。210 收藏 -
Golang · Go教程 | 9小时前 | 标准库 · 定时器 · 并发控制 · Go教程 · 工程实践 · Go 并发 定时任务 time.Ticker Ticker.Reset Ticker.Stop
服务里的定时任务需要动态调整周期时,直接替换 ticker 容易留下旧循环或多条消费路径。本文用一个可停止的刷新任务演示 time.NewTicker、Ticker.Reset、Ticker.Stop 与 ticker.C 的最小配合,说明 Reset 的边界、退出方式和复查方法。207 收藏 -
slices.Grow 不是无条件提速开关。本文用批量追加日志事件的场景,拆开容量预估、底层数组复用、负数参数和基准验证,给出可以落地的使用边界。206 收藏 -
bytes.Clone 返回独立的 []byte 副本,适合把复用缓冲区中的数据保存成安全快照。本文用可复现代码说明 append、切片别名和 bytes.Clone 的差异,并给出基线与边界。202 收藏 -
Go 1.23 引入的 slices.Values 可以把切片包装成 iter.Seq。本文从实现、空切片和提前停止三个边界出发,说明它与普通 range、slices.Collect 的连接方式。201 收藏 -
复用 Go 的 time.Timer 时,Reset 的安全关键不是重新设置时长,而是先确认旧定时器是否停止、是否仍有到期信号,以及是否存在多个 goroutine 同时消费 C。本文用单次超时循环拆解 Stop、Reset、timer.C 和并发读取的边界。199 收藏 -
用 Go net/http 实现一个可取消的 SSE 心跳服务,串起 Flusher、Request.Context、断线检测和资源回收,重点看连接结束后如何让后台工作及时停下来。198 收藏 -
Go 1.20 引入 unsafe.StringData、unsafe.String 和 unsafe.SliceData 后,字符串与字节切片之间可以少一次复制,但指针生命周期、只读约束和空字符串边界必须一起核验。本文用可复现实验拆开这些风险。197 收藏 -
服务启动后,配置、正则或只读客户端常常只需要初始化一次,却要被多个 goroutine 安全读取。本文用 Go 标准库的一次性值函数演示惰性初始化、结果缓存、panic 复用与测试边界,说明它和手写 sync.Once 的取舍。196 收藏 -
Golang · Go教程 | 2天前 | 标准库 · JSON · go · 后端开发 · 版本迁移 · JSON Go 1.27 encoding/json/v2 encoding/json/jsontext GOEXPERIMENT
Go 1.27 带来 encoding/json/v2 与 encoding/json/jsontext。本文从旧 encoding/json 兼容边界开始,演示 v2 的选项配置、重复字段和非法 UTF-8 的回归检查,并给出灰度试用与 GOEXPERIMENT=nojsonv2 回退清单。195 收藏 -
Go slog 的 AddSource 能把日志调用点写进 source 字段,排查并发服务时很有用,但每条日志都要承担调用点定位和格式化成本。本文用可验证的基准与生产开关说明它的代价、适用范围和安全切换方式。192 收藏 -
Go 的 O_APPEND 只把每次写入的起点交给内核保证,不等于整条日志天然不可交错,也不替日志轮转解决文件描述符和重命名边界。文章用可运行示例拆开偏移、并发写入和轮转后的处理方式。192 收藏