Go教程技术文章
-
围绕 Go 1.26 Green Tea GC 的小对象标记扫描、同口径基准和 nogreenteagc 回退对照,说明如何判断收益与定位回归。201 收藏 -
Go 标准库 flag.FlagSet 可以为每个子命令建立独立的参数集合。本文用 serve 和 check 示例说明命令分发、参数解析、位置参数校验及错误边界。201 收藏 -
Go 将 JSON 解码到 map[string]any 时,数字默认进入 float64,可能破坏大整数精度。本文用 Decoder.UseNumber 保留 json.Number,并说明何时使用 Int64、Float64、String 或结构体字段。201 收藏 -
Golang · Go教程 | 2星期前 | 依赖管理 · 调试 · Go教程 · 工程实践 · 构建信息 · Go 依赖版本 debug.BuildInfo debug/buildinfo 发布验收
线上只拿到一个 Go 二进制时,debug.BuildInfo 可以帮助你还原构建工具链、主模块、依赖模块与 VCS 设置。本文用 ReadFile 和 ReadBuildInfo 组成一套发布验收流程,并说明模块模式、裁剪信息与脏工作区的边界。200 收藏 -
Go 1.22 及以上的 slices.Delete 会清零删除后的尾部元素。本文用指针切片说明为什么必须接住返回值,以及旧写法、切片别名和 Clone 应该怎样处理。200 收藏 -
使用 Go 标准库 multipart.Writer 同时写入普通字段和文件字段,正确关闭 Writer、绑定带 boundary 的 Content-Type,并从资源、输入与审计角度排查上传请求问题。200 收藏 -
Go 的 string 按字节保存,按字节截断中文或表情可能切入 UTF-8 编码中间。本文用 unicode/utf8 设计安全的字节上限切分函数,并说明非法输入、rune 计数和性能边界。200 收藏 -
复用 Go 的 time.Timer 时,Reset 的安全关键不是重新设置时长,而是先确认旧定时器是否停止、是否仍有到期信号,以及是否存在多个 goroutine 同时消费 C。本文用单次超时循环拆解 Stop、Reset、timer.C 和并发读取的边界。199 收藏 -
Golang · Go教程 | 3天前 | 错误处理 · Go教程 · 流式读取 · io包 · 短读 · Go io.Reader io.EOF io.CopyN ErrUnexpectedEOF ReadFull
解释 Go io.CopyN 返回 ErrUnexpectedEOF 的真实来源:普通短源输入通常是 io.EOF,而底层 Reader 已报告结构化数据截断时,CopyN 会保留该错误。文章给出 written、err、ReadFull 和调用方兼容处理的判断方法。199 收藏 -
Go GODEBUG 并不是简单的“一次运行开关”。本文区分临时环境变量、shell 继承、go.mod 的 godebug、//go:debug 和进程启动后的修改边界,帮助你判断配置到底影响谁。199 收藏 -
用 Go net/http 实现一个可取消的 SSE 心跳服务,串起 Flusher、Request.Context、断线检测和资源回收,重点看连接结束后如何让后台工作及时停下来。198 收藏 -
Go 1.20 引入 unsafe.StringData、unsafe.String 和 unsafe.SliceData 后,字符串与字节切片之间可以少一次复制,但指针生命周期、只读约束和空字符串边界必须一起核验。本文用可复现实验拆开这些风险。197 收藏 -
用 Go runtime/metrics 读取 Float64Histogram,理解 Buckets 与 Counts 的对应关系,并用快照估算延迟分布的中位数和高分位边界。197 收藏 -
Golang · Go教程 | 23小时前 | HTTP · 文件上传 · Go教程 · 错误排查 · 文件上传 Go multipart/form-data mime/multipart boundary
Go 的 mime/multipart 报错时,先检查 Content-Type 里的 boundary,再对照请求体分隔线、CRLF、结束标记和 ReadForm 限制。本文给出发送端与解析端的稳定写法和排查清单。197 收藏 -
服务启动后,配置、正则或只读客户端常常只需要初始化一次,却要被多个 goroutine 安全读取。本文用 Go 标准库的一次性值函数演示惰性初始化、结果缓存、panic 复用与测试边界,说明它和手写 sync.Once 的取舍。196 收藏