Go问答技术文章
-
netip.Prefix.Contains 判断网段时,结果异常通常不是位运算错了,而是 IPv4 与 IPv6 地址族、未规范化前缀或无效掩码混在了一起。本文用最小代码复现这些边界,并给出稳定的解析、规范化和测试方法。501 收藏 -
用 httptrace.ClientTrace 的 GotConnInfo 判断 Go HTTP 请求拿到的是新连接还是曾经使用过的连接,并区分 WasIdle、IdleTime 与请求体关闭时机。501 收藏 -
sync.Map.LoadAndDelete 返回的 value 可能是 nil,但 loaded 仍能准确区分键不存在与键存在。本文用最小可运行示例说明原子删除、nil 值和重复读取的边界。500 收藏 -
Go 的 sync 包双返回值 Once 辅助函数不只是把初始化代码执行一次,还会把第一次返回的值和错误一起缓存。本文用并发初始化配置的场景说明它与普通 Once 的边界。499 收藏 -
Go 的 slice 传入函数时复制的是切片头,不是底层数组。本文用 append 和容量边界的具体例子解释为什么函数内部修改会影响调用方,并给出隔离数据、限制容量和复查别名的选择方法。499 收藏 -
Go 的 sync.Map.Clear 可以一次清空映射中的全部条目,但它只适合明确的批量失效场景。通过并发读写示例、基线测量和结果核对,说明 Clear 的可见性、成本与替代方案。498 收藏 -
time.Ticker.Stop 只停止后续计时,不会关闭 ticker.C。本文用可复现的 Go 代码说明停止、退出和取消之间的边界,并给出不会卡住的定时任务收尾写法。498 收藏 -
Golang · Go问答 | 13小时前 | 标准库 · go · Context · HTTP服务 · 连接管理 · Go net/http context 连接生命周期 Server.ConnContext
Server.ConnContext 只在新连接建立时修改连接级上下文,之后同一连接上的请求会继承它。本文用最小 HTTP 服务追踪 BaseContext、ConnContext、Handler 的调用顺序,并说明连接复用、HTTP/2 与清理逻辑的边界。498 收藏 -
用 Go 标准库 net/http 的 ResponseController.Flush 实现分段响应,结合 httptest 验证首段数据何时可读,并说明 ResponseWriter 包装、代理缓冲和错误处理边界。497 收藏 -
Golang · Go问答 | 1天前 | 标准库 · golang · Go问答 · 文件系统 · 路径安全 · Go fs.ValidPath io/fs.ValidPath 文件系统路径 路径清理
io/fs.ValidPath 接收的是文件系统内部路径,不是操作系统原生路径。本文从拒绝 .、.. 和斜杠的现象入手,拆开清理、校验与 Open 调用之间的边界。497 收藏 -
flag.FlagSet.Set 不只是在 Parse 之后补一个值:它会调用目标 flag 的 Value.Set,成功后把该参数记入 actual,重复赋值则按调用顺序覆盖。本文用子命令配置示例说明默认值、Set、Parse 与 ContinueOnError 的边界。497 收藏 -
Go 程序明明调用了 Write,退出后日志文件却少了最后几行,常见原因不是字符串没生成,而是 bufio.Writer 仍留在用户态缓冲区,或 Flush、Close 的错误没有被检查。本文用一个退出前丢日志的场景,拆开缓冲写入、defer 执行时机、Flush 与 Sync 的边界,并给出可复测的收尾写法。496 收藏 -
Golang · Go问答 | 22小时前 | golang · HTTP · Context · net/http · Go问答 · 请求复制 · Http请求 net/http context header Go问答 Request.Clone
net/http.Request.Clone 会复制请求的大部分结构和 Header,但不会复制 Body 的底层读取位置。本文用重试与多下游请求场景拆开 Body、Header、URL 和 Context 的独立性边界。496 收藏 -
Go 1.24 的 os.Root 和 os.OpenInRoot 如何把不可信文件名限制在指定目录内,本文用最小代码说明路径穿越、符号链接与 Close 的边界。493 收藏 -
io.SectionReader 把底层 ReaderAt 限制在一段区间内,ReadAt 每次按给定偏移读取且不共享当前位置。本文用短代码拆开偏移换算、边界错误和并发复用条件。492 收藏