Go问答技术文章
-
Go runtime.SetFinalizer 遇到引用环时,垃圾回收无法安排满足依赖关系的终结顺序,终结器执行并不保证。本文用最小对象图说明原因,并给出断开回指、显式 Close 和可靠测试的处理方式。189 收藏 -
Go 包装文件描述符、cgo 资源等外部句柄时,finalizer 可能在最后一次字段使用后提前运行。本文说明 runtime.KeepAlive 的准确位置、finalizer 闭包的常见陷阱,以及显式 Close 和 AddCleanup 的取舍。464 收藏 -
Golang · Go问答 | 3天前 | 容器 · 性能排查 · Go问答 · 运行时 · go GOMAXPROCS 容器 CPU 配额 runtime.NumCPU cgroup cpu.max Kubernetes CPU limit
Go 容器里的 GOMAXPROCS 不一定等于宿主机 CPU 数。本文从 CPU limit、CPU request 和运行时实际值入手,给出 Go 进程内与 cgroup 两侧的观察方法,并说明 Go 1.25+ 的自动默认、手动覆盖和复查边界。360 收藏 -
Go fuzzing 找到失败输入后,怎样从日志、testdata/fuzz 目录和 -run 路径中定位首次失败案例,并把它变成稳定回归测试。282 收藏 -
testing.T.Setenv 修改的是整个测试进程的环境变量,因此不能在并行测试或有并行祖先的测试中使用。本文说明冲突原因、串行拆分方式,以及如何用局部配置让并行子测试保持隔离。470 收藏 -
Go 并行子测试要在各自的回调里调用 testing.T.TempDir,让每个用例获得独立且自动清理的目录;父测试提前创建目录再传递会造成共享写入。本文说明目录隔离、并行等待、清理边界和排查清单。375 收藏 -
Go 的 exec.Cmd.WaitDelay 不只是进程超时参数,它还限制子进程退出后 stdout/stderr 管道迟迟不关闭的等待时间。本文说明计时起点、ErrWaitDelay 与 ExitError 的区别,以及如何安全判断返回值。157 收藏 -
Go 的 Cmd.StdoutPipe 不应与 Run 混用,也不能在 Wait 前抢先关闭读取边界。本文用一条完整生命周期解释 Start、读取、Wait 的正确顺序,并排查管道提前关闭与双管道阻塞问题。293 收藏 -
Go 的 exec.Cmd.Environ 返回当前命令环境的副本。本文解释旧快照、Env 继承、重复键和启动前检查的关系,给出避免读不到刚设置环境变量的实用写法。465 收藏 -
讲清 Go template.ParseFS 如何按 embed.FS 的正斜杠路径使用通配符,说明多级模板目录的组织、** 误区与 ExecuteTemplate 的稳定入口写法。369 收藏 -
Go 模板调用自定义函数时,FuncMap 必须先于 Parse 注册。本文用最小示例解释解析期名称检查、执行期函数替换和常见排错边界。367 收藏 -
Go html/template 把 href 中的 URL 改成 & 或 #ZgotmplZ,并不一定是链接坏了。本文用一个最小页面拆开 HTML 实体、URL 过滤、协议判断和受信 URL 类型的边界。172 收藏 -
Go httputil.ReverseProxy 的 SetURL 会让出站 Host 默认跟随目标主机。本文用 Rewrite 先修改目标 URL,再保留入站 Host,并说明 X-Forwarded-Host、路径拼接与安全边界。401 收藏 -
Go 的 http.Cookie 设置 SameSite 后,浏览器是否发送还要看站点关系、请求凭据、Secure 和 Path。本文按请求链路定位 Cookie 不见的原因。144 收藏 -
Go 的 http.Header 用小写字符串调用 Get 也可能成功,因为 Get 会把查询键规范化;但直接用小写键构造 map 时,直接索引与 Get 查找的键并不相同。本文用对比示例拆清这条兼容边界。275 收藏