Go问答技术文章
-
Go io.MultiWriter按顺序写入多个Writer,首个错误会截断后续目标。本文用故障示例拆解部分成功语义,并给出全量一致、尽力写入和可重试封装的处理边界。195 收藏 -
Go compress/gzip 写入后不调用 Close,可能导致缓冲数据和 GZIP footer 没有完整写出。本文用最小示例说明 Write、Close、底层资源关闭和读取到 EOF 的排查顺序。132 收藏 -
Go embed.FS中的路径是跨平台的虚拟路径。本文从失败现象出发,说明反斜杠为何会让ReadFile找不到文件,并给出正斜杠、path.Join和测试复查的处理方法。408 收藏 -
Go exec.CommandContext 默认只取消 Cmd 对应的父进程。本文用 Unix 进程组、负 PGID 信号和有限宽限期,说明如何清理子进程树,以及 Cancel、WaitDelay、Wait 的职责边界。184 收藏 -
Go os/exec 同时读取 StdoutPipe 和 StderrPipe 时,串行消费可能因管道缓冲写满而阻塞。本文给出 Start、双路读取、Wait 的修复顺序,并说明何时使用 CombinedOutput。113 收藏 -
Go strconv.Atoi 已经把字符串按当前平台 int 宽度解析。遇到溢出或非法文本时,应先检查 error,再做业务范围判断,最后才使用转换结果。137 收藏 -
Golang · Go问答 | 1天前 | Go问答 · Go fmt.Fscan剩余换行 Go读取换行分隔输入 fmt.Fscan与ReadString Go空行处理 bufio.Reader整行读取
解释 Go fmt.Fscan 将换行视为空白分隔符时的边界行为,给出切换到 ReadString、Fscanln 和整行解析的实用方案。343 收藏 -
Go error经过%w包装后不应再依赖完整字符串判断。本文区分错误文本、哨兵错误和具体类型,给出errors.Is、errors.As及多错误包装的替代方案。487 收藏 -
Go接口只有动态类型和动态值都未设置时才等于nil。本文用一个小型错误处理示例拆解nil指针装入接口后的判断差异,并给出error返回、类型断言、reflect检查和测试验收方法。369 收藏 -
解释 Go API 中 nil slice 与空 slice 的 JSON 差异,给出响应边界归一化、omitempty 边界和 encoding/json v1/v2 迁移测试方案。411 收藏 -
遍历结构体切片时,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 收藏