Go问答技术文章
-
Go 的 os.ReadFile 会一次性把文件内容放进 []byte,适合小配置和短文本,不适合把大文件直接装进内存。本文用文件大小、读取方式和错误处理三个维度拆解内存暴涨原因,并给出 bufio.Reader、io.Copy 和分块处理的选择边界。220 收藏 -
处理用户提供的文件名时,filepath.Join 加 os.Open 可能被 .. 或符号链接带出指定目录。本文用 Go 1.24 的 os.Root 与 os.OpenInRoot 拆开安全打开、错误判断、资源关闭和平台边界,给出可复查的小示例。460 收藏 -
os.DirFS 适合把目录暴露成 fs.FS,但它不是完整的安全沙箱。本文用相对路径和符号链接案例拆开根目录边界,比较 os.DirFS 与 os.OpenRoot 的使用场景,并给出检查清单。230 收藏 -
用 Go atomic.Pointer 替换进程内共享配置时,关键不是把指针换掉,而是保证读线程拿到完整快照、发布顺序清楚且失败时能回到旧版本。本文用一份可运行的配置结构说明初始化、原子发布、校验和回滚边界。488 收藏 -
解释 Go io.Copy 看似复制不完整时如何区分 EOF、短写入和自定义 Reader 错误,并给出可复现的检查代码。272 收藏 -
slices.Clone 和 append 都能复制 Go 切片,但容量、底层数组别名和空切片行为并不完全相同。本文用可运行示例说明如何判断拷贝是否隔离,以及在并发和接口返回中该怎么选。276 收藏 -
Golang · Go问答 | 3星期前 | 并发 · golang · csv · 数据处理 · Go问答 · 数据导入 encoding/csv csv.Reader Go问答 ReuseRecord 切片复用
encoding/csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片会复用底层数组。本文用导入任务中的异步保存场景说明字段为什么会被后续行覆盖,以及什么时候必须复制记录。465 收藏 -
Golang · Go问答 | 3星期前 | 并发 · net/http · HTTP客户端 · Go问答 · Go header 请求体 http.Request.Clone WithContext HTTP重试
http.Request.Clone 和 WithContext 都能生成带新上下文的请求,但它们对 Header、URL、Body 和并发使用的约束不同。本文用一次 HTTP 重试场景拆开两者的复制边界,给出安全写法和验收检查。173 收藏 -
Go 的 net.Conn.SetDeadline 会把读写截止时间写入连接状态,超时后不会因为下一次读写自动恢复。本文用一个连接复用场景说明清理时机、读写边界和可验证的修复写法。277 收藏 -
在 Go 服务中把外部 DTO 隔离在防腐层,能把供应商字段变化挡在接口边界外;本文用订单状态同步示例说明映射、校验、版本兼容与测试验收如何落地。406 收藏 -
Go 里用 CmdContext 设置超时后,父命令返回并不等于整棵子进程树已经退出。本文用可复查的命令场景解释 context 取消、Wait 返回、子进程残留和回收验证之间的边界,给出带退出状态检查的处理方式。470 收藏 -
Golang · Go问答 | 3星期前 | 错误处理 · go · 数据库 · 排查 · SQL · rows.Close rows.Next Rows.Err Go database/sql 空结果
Go 查询 database/sql 时,Rows.Next 返回 false 不一定代表空结果。本文用一个分页查询故障拆开 Next、Err、Close 的职责,给出可复用的遍历模板、异常定位顺序与资源收尾检查。444 收藏 -
time.Ticker.Stop 只负责停止后续计时,不承诺把已经进入通道的值清空。本文从定时刷新任务的退出现场出发,拆解停止语义、旧值竞态、goroutine 泄漏与可验证的退出写法。467 收藏 -
给 Go HTTP 接口限制请求体时,http.MaxBytesReader 超限并不会自动替处理器写完响应。本文用一个可运行的上传接口说明读取错误、状态码时机、连接收尾和测试验收应该怎样配合。218 收藏 -
Go 服务偶发变慢时,runtime/metrics 能把 GC 频率、暂停和堆目标放到同一组可采样指标里。本文从一次延迟抖动开始,说明如何选指标、对齐时间窗口,并排除把正常回收误判成 GC 压力。278 收藏