Go语言技术文章
-
go-mp3 是纯 Go 的 MP3 解码器,负责把输入源解码为 16 位小端双声道 PCM 数据,并不直接打开声卡或播放设备。本文用职责边界、读取示例和排障清单说明如何把解码结果交给独立播放后端。447 收藏 -
本文用 bufio.Reader.Discard 的返回值拆解完整跳过、部分跳过和 EOF 的边界,说明怎样结合 discarded 与 error 判断截断输入,并给出不会吞掉底层错误的封装方式。447 收藏 -
Go go list 可以用模板或 JSON 输出包路径、目录、模块和依赖信息。文章从包列表、-deps、模板字段、结构化输出和模块模式几个边界出发,给出适合脚本与构建工具消费的稳定写法。446 收藏 -
Go context.Deadline 返回的是绝对时间,不是剩余时长;读取时必须检查 ok,并在调用下游前区分无期限、已过期和预算不足。本文给出提前失败、子任务预算与取消函数的防御式写法。446 收藏 -
用 sync/atomic.Pointer 原子发布完整的 Go 配置快照,说明 Store、Load、Swap 与 CompareAndSwap 的区别,以及为什么发布后不能原地修改配置对象。446 收藏 -
http.DetectContentType 最多只检查输入前 512 字节,不足 512 字节的短内容仍可参与判断,无法识别时返回 application/octet-stream。本文用流式采样示例说明读取上限、默认结果与后续校验边界。446 收藏 -
Go INI 默认会把同名键视为同一个 Key。本文用 ShadowLoad、ValueWithShadows 和 LoadOptions 说明怎样保留重复键的多个值,以及完全相同的重复值何时会被去重。446 收藏 -
Go Humanize 的 Time 适合把时间点转成“几秒前”“几分钟后”等相对描述,不适合作为精确倒计时的数值来源。本文用 deadline、time.Until 和独立刷新策略说明展示文本与计时逻辑的分工。446 收藏 -
Golang · Go问答 | 1星期前 | 并发 · pprof · 性能排查 · Go问答 · Go Goroutine pprof net/http/pprof runtime/pprof 并发排障
Go goroutine 泄漏的关键不是单看数量,而是定位长期阻塞且再也等不到解除条件的代码行。本文从数量趋势、runtime/pprof 栈、channel 与锁的退出条件入手,给出可复用的排查和修复路径。446 收藏 -
Go 的 multipart.FileHeader.Open 返回一个可读取、可关闭的文件接口。本文说明如何在打开成功后及时安排 Close,怎样分别处理读取与关闭错误,以及为什么它和 Form.RemoveAll 不是同一件事。446 收藏 -
Go url.Values 是 map[string][]string,直接赋值或复制切片引用会共享底层数组。本文用 make 与 copy 实现完整深拷贝,并说明单键隔离、Set 与 Add、nil 值、并发访问和 Encode 边界。446 收藏 -
Go constant.Val 面向底层机器值,ExactString 面向精确文本。本文按缓存键、代码生成、JSON 协议和数值计算拆分两者的适用场景,并说明字符串、浮点、复数与 Unknown 的边界。446 收藏 -
Go 交叉编译时报找不到系统库,通常不是 GOOS 或 GOARCH 本身写错,而是项目进入了 cgo 路径却没有目标平台的 C 编译器、头文件或链接库。本文按纯 Go 与 cgo 两条边界给出排查和构建方案。445 收藏 -
在 32 位 ARM、386 或 32 位 MIPS 上使用 64 位原子量时,旧式 sync/atomic 函数要求调用方保证对齐。本文解释结构体字段布局风险,并给出迁移 atomic.Int64、保留旧 API 和构建检查的做法。445 收藏 -
Go 项目在本地用 replace 指向兄弟目录时,开发机可能因为目录和 go.work 存在而编译通过,CI 却在依赖解析阶段失败。本文解释相对路径、require、go.work 与 GOWORK=off 的边界,并给出从本地联调迁移到正式模块版本的做法。445 收藏