Go问答技术文章
-
Go HTTP 服务调用 Shutdown 后仍可能丢请求,关键不在一个函数是否返回,而在新连接、活跃连接、Keep-Alive 连接和超时窗口是否被分别处理。本文用一个可复现的停机流程拆开这些边界。343 收藏 -
用 Go 的 io.SectionReader 读取文件片段时,EOF 到底代表成功还是数据不足?本文从偏移量、剩余长度和 ReadAt 行为入手,给出一段可复查的判断代码。342 收藏 -
Go 1.22 起 ServeMux 支持方法和通配符,重叠路由按更具体的模式优先;只有双方都不更具体时才冲突并在注册时触发 panic。本文用真实模式拆解方法、路径、主机和注册顺序的边界。342 收藏 -
用 Go archive/tar 读取压缩包时,先做本地路径判断,再限制输出根目录并拒绝链接条目,最后用越界和覆盖测试验收解包逻辑。341 收藏 -
用 Go 1.24 的 strings.FieldsSeq 逐项读取空白分隔日志,比较 Fields 的切片结果,演示找到目标后短路退出以及字符串切片的生命周期边界。341 收藏 -
讲清 Go 中 http.Request.URL.Query 返回的 url.Values 结构,如何读取重复参数、保留出现顺序,并区分参数缺失与显式空值。340 收藏 -
用一个可复现的小例子拆开 strings.CutPrefix 与 HasPrefix 加切片的差别,重点核对 found 返回值、空前缀、相同前缀和 UTF-8 字符边界。338 收藏 -
Golang · Go问答 | 1天前 | golang · 错误处理 · Go问答 · io包 · 文件写入 · Go Writer io.MultiWriter io.ErrShortWrite 短写
io.MultiWriter 会把一次写入依次交给多个 Writer;只要某个目标返回短写或错误,调用方就必须按返回字节数和错误值判断是否完整。本文用可复现实验拆解 ErrShortWrite 的触发边界、失败顺序和安全核对方式。338 收藏 -
解释 Go 的 net/url.PathEscape 只负责单个 URL 路径段的原因,并用 url.JoinPath、URL.Path 和 EscapedPath 处理资源地址拼接中的斜杠、编码与路径边界。338 收藏 -
Go 1.26 的实验性 runtime/secret 通过 secret.Do 清理密码学临时数据。本文用一条短命密钥处理链说明启用方式、适用边界和不能替代的安全措施。337 收藏 -
bytes.Buffer.Reset 会清空可读数据,却保留底层存储。本文用容量、切片别名和并发边界说明复用何时有益、何时会让大块内存长期驻留。334 收藏 -
环境变量里的布尔值并不只有 true 和 false。本文用 strconv.ParseBool 拆开可接受字面量、空值默认、错误回滚和配置热更新边界,给出一套不会把拼写错误静默当成关闭的 Go 配置写法。333 收藏 -
Go slog.Attr 适合把结构化字段交给日志处理器,但敏感字段不能在组装阶段被误写入。本文用请求日志场景说明 Attr 的组装顺序、脱敏边界、With 继承行为与单测核对方法。331 收藏 -
当正则模式的一部分来自用户输入或配置时,regexp.QuoteMeta 能把文本中的正则元字符当作普通字符处理。本文比较直接拼接与 QuoteMeta 的匹配结果,并说明它不适合替代完整正则语法的边界。331 收藏 -
Go 标准库 flag 默认适合单值参数,但 --tag=a --tag=b 这类重复参数需要自定义 flag.Value。本文用一个可运行的小工具说明 String、Set、Parse 的关系、默认值处理和常见边界。331 收藏