Go问答技术文章
-
用 Go text/scanner 扫描数字时,先通过 TokenText() 保存原始字面量,再按 token 类型做数值转换,避免下划线、进制和指数写法在处理中丢失。342 收藏 -
用 Go archive/tar 读取压缩包时,先做本地路径判断,再限制输出根目录并拒绝链接条目,最后用越界和覆盖测试验收解包逻辑。341 收藏 -
用 Go 1.24 的 strings.FieldsSeq 逐项读取空白分隔日志,比较 Fields 的切片结果,演示找到目标后短路退出以及字符串切片的生命周期边界。341 收藏 -
Go bufio.Reader.UnreadByte 只能撤回最近一次成功读到的字节,因为 Reader 只维护一个回退状态而不是历史栈。本文结合缓冲游标、失效调用和替代方案说明如何正确处理解析试探。341 收藏 -
Go 1.24 新增的 os.Root 可以把文件操作限制在指定目录内,减少路径拼接带来的越界风险。本文用一个导入任务目录演示 Open、Join、Mkdir 和遍历文件的安全边界,并用回归测试核对绝对路径、.. 路径和符号链接场景。340 收藏 -
讲清 Go 中 http.Request.URL.Query 返回的 url.Values 结构,如何读取重复参数、保留出现顺序,并区分参数缺失与显式空值。340 收藏 -
Go 的 net/url 会把 URL 路径解码到 Path,同时用 RawPath 保留可复原的编码提示。掌握 URL.EscapedPath 的判断规则,才能在 %2F、路径重写和请求回放场景中稳定保留原始路径语义。340 收藏 -
Golang · Go问答 | 1个月前 | 并发 · pprof · 故障排查 · Go问答 · Go goroutine泄漏 net/http/pprof goroutineleak runtime/pprof
Go 1.27 将 goroutineleak profile 作为正式能力,但空结果不等于没有泄漏。本文从 runtime/pprof 的可达性判定出发,核对阻塞原语、全局对象盲区与 net/http/pprof 入口。340 收藏 -
Go 方法值创建时会保存接收者。指针接收者保存的是指针副本,调用时仍能沿指针修改原对象;值接收者保存的是结构体副本,后续变化不会回写。340 收藏 -
Golang · Go问答 | 4星期前 | goroutine · net/http · Go问答 · Go recover panic 连接中断 Request.Context HTTP handler
Go HTTP handler 出现 panic 时,外层 recover、net/http 默认恢复和客户端连接中断不是同一件事。本文用最小中间件说明 recover 的作用域、已提交响应的边界、Request.Context 取消信号,以及子 goroutine 如何单独处理 panic。339 收藏 -
Go net/http 会按目标主机判断敏感请求头是否继续转发。本文结合 CheckRedirect 说明默认行为、跨域边界和受控目标的认证头处理方式。339 收藏 -
Go sync.Cond 的 Wait 返回只表示收到通知,不代表共享条件已经成立。本文用队列式示例说明为什么必须在循环中重新检查条件,并梳理 Signal、Broadcast 与锁的配合边界。339 收藏 -
Go select 多个发送或接收分支同时就绪时会均匀伪随机选择,本文说明 case 顺序、default、关闭通道和 nil 通道的边界,并给出优先级处理方案。339 收藏 -
用一个可复现的小例子拆开 strings.CutPrefix 与 HasPrefix 加切片的差别,重点核对 found 返回值、空前缀、相同前缀和 UTF-8 字符边界。338 收藏 -
io.MultiWriter 会把一次写入依次交给多个 Writer;只要某个目标返回短写或错误,调用方就必须按返回字节数和错误值判断是否完整。本文用可复现实验拆解 ErrShortWrite 的触发边界、失败顺序和安全核对方式。338 收藏