Go问答技术文章
-
Go 的 recover 只能处理当前 goroutine 正在展开的 panic,父 goroutine 的 defer 无法跨线程接住子 goroutine 的异常。本文拆解正确的入口包装、结果回传和失败处理方式。294 收藏 -
Go net.Pipe 没有内部缓冲,读写可能一直等待对端动作。本文说明怎样设置 deadline,并用 errors.Is、net.Error 和关闭错误区分超时、对端关闭与其它网络错误。294 收藏 -
slices.Clip 会把切片容量收紧到长度,让后续 append 无法复用原切片的容量尾部;本文解释它与三下标切片、slices.Clone 的区别,以及共享元素和并发边界。294 收藏 -
Go regexp.Compile 遇到重复命名分组时,先确认同名捕获组本身可以被接受,再用 syntax.Error 的 Code 和 Expr 定位真正的语法错误,并结合 SubexpNames 与 SubexpIndex 读取同名组索引。294 收藏 -
Go 集成测试同时依赖被测包和上层组件时,可用 package foo_test 把测试放到依赖图上层,再用 export_test.go 提供有限的测试期辅助入口,避免 import cycle not allowed in test。293 收藏 -
Go token.File.PositionFor 的 adjusted 控制是否采用替代位置信息,可能改变文件名和行列,但不改变原始偏移。本文用同一 Pos 对照示例,解释诊断显示、源码编辑与回退策略。293 收藏 -
Go 时间格式化与本地时区不同,通常来自时间值 Location、输入解析语义或部署环境差异。通过显式加载业务时区、使用 In、区分 ParseInLocation 与展示转换,并为容器提供时区数据,避免固定加小时造成错误。292 收藏 -
Golang · Go问答 | 3星期前 | 性能优化 · bufio · Go问答 · Go write FLUSH bufio.Writer available buffered NewWriterSize
Go bufio.Writer 的缓冲区大小应围绕写入粒度、并发量和内存预算选择。本文用 NewWriterSize 设置容量起点,说明 Buffered、Available、Size 的观察方式,并把 Flush、Close 和错误处理放入完整的资源边界。292 收藏 -
区分tar硬链接与符号链接的目标语义,解释前向引用失败原因,给出延迟依赖解析组件,说明缺失目标、循环依赖、创建错误及接口兼容策略。292 收藏 -
Go ticker 不 Stop 是否一定导致资源泄漏,要区分 Go 版本、ticker 引用、后台 goroutine 和业务任务生命周期。本文给出跟随任务退出的写法与排查思路。292 收藏 -
Go Zap SugaredLogger 的 Infow、Errorw 等结构化日志方法接收可变键值参数。参数数量为奇数时,开发环境会触发 panic,生产环境会记录错误并跳过孤立键;本文给出边界检查、zap.Field 和排查字段丢失的实用写法。292 收藏 -
Go CSV 变长记录可设置 FieldsPerRecord=-1,再限定列数范围、必填值、字段长度与记录数。本文给出总字节预算加一字节识别超限的示例,并解释多行字段、复用切片与提交边界。292 收藏 -
go/constant 的 ToInt 不是向零截断函数,而是精确可表示性转换。本文用 3/2、6/2、浮点值和复数说明为什么非整数有理数会得到 Unknown,以及需要截断时如何把舍入责任放回业务层。292 收藏 -
Go 的 image.Image 不要求调用方先知道图片一定是 Gray 还是 RGBA。本文从 ColorModel 与 At 出发,说明怎样统一读取像素、处理预乘 alpha,并在确实需要时转换成稳定的 Gray、RGBA 或 NRGBA 类型。291 收藏 -
Go HTTP 服务端客户端断开后仍有工作运行,重点检查 r.Context 是否传到阻塞操作。本文对比 CloseNotifier、Background 与 Request.Context,给出迁移写法、回归边界和异步任务取舍。291 收藏