Go问答技术文章
-
遍历结构体切片时,range 值变量会复制每个元素。本文用最小示例说明复制边界,并给出索引访问、取地址和基准测试的选择方法。305 收藏 -
Go select 的 default 在没有就绪通信时会立即返回,放进永久循环容易造成忙等。本文给出删除 default 的阻塞写法、time.Ticker 退避方案,以及 channel 关闭、nil channel 和 context 取消的排查清单。231 收藏 -
多个 goroutine 往同一个 Go channel 发送数据时,关闭权应交给发送方之外的协调者;本文用 WaitGroup 统一等待并给出提前退出边界。451 收藏 -
Go 向已关闭 channel 发送会触发 panic。本文从发送生命周期出发,说明关闭责任如何划分,并给出多发送方等待后统一 close 的迁移写法与排查清单。402 收藏 -
从闭包变量绑定、Go 版本语义和 Timer 生命周期三个方向,排查循环创建 Go 定时回调时业务标识错位,并给出可落地的修复与回归清单。460 收藏 -
Go 服务在精简容器中调用 time.LoadLocation 失败,通常是 IANA 时区数据库缺失。本文梳理查找顺序,并给出安装 tzdata、嵌入 time/tzdata 与显式回退的部署方案。148 收藏 -
Go 接口处理时间字段时,Unix 时间戳和 RFC3339 文本应按输入协议分别解析。本文用 time.Parse、time.Unix 和单位检查整理一套可复用的选择规则。453 收藏 -
Go regexp 遇到 .+ 贪婪匹配时,字段可能跨过分隔符吞掉后续内容。本文用可复现输入对比贪婪、非贪婪和字符类边界,并给出子匹配回归清单。267 收藏 -
Go regexp 中点号默认不匹配换行。本文用最小示例说明 (?s)、(?s:...)、显式字符类和非贪婪量词的选择,帮助控制跨行范围并避免多条记录被一次吞并。361 收藏 -
解释Go io.Copy遇到Writer短写但返回nil错误时的处理结果,说明io.ErrShortWrite、WriterTo与ReaderFrom快路径,以及自定义Writer的修复方式。145 收藏 -
Go 中直接调用 io.ReadAll 会把 Reader 读到 EOF。面对没有可靠长度的 HTTP 响应,应先做 Content-Length 预检查,再用 LimitReader 多读一个字节识别超限,最后把关闭、错误和解析边界统一处理。118 收藏 -
Go 中 bufio.Scanner 读取长日志时看起来只返回前一部分内容,通常是 token 超过默认缓冲上限后 Scan 停止。本文从 Err 检查、Buffer 配置、字节上限和 Reader 替代方案四个层面给出排查方法。499 收藏 -
解释 Go gzip.Reader 为什么要在完整读取后仍然 Close,并演示如何分别处理 ErrChecksum、os.File 和 HTTP 响应体的关闭责任。229 收藏 -
讲清 Go archive/zip 遍历条目时 File.Open 返回值的关闭时机、循环 defer 的资源滞留原因,以及用 io.LimitReader 控制解压读取量的方法。149 收藏 -
围绕 Go archive/tar 的 Header.Name 讲清普通相对路径、父目录跳转、tar.ErrInsecurePath、链接条目和固定解压根目录的安全判断方法。253 收藏