Go问答技术文章
-
解释 Go 实验性 runtime/secret.Do 为什么不能让从回调返回的 string 自动被擦除,并给出把敏感计算收口、由调用者预分配结果空间和发布检查的做法。211 收藏 -
Go trace 页面打不开,先检查 trace.out 是否仍在写入,再确认 trace.Stop、文件 Close 和进程退出顺序,最后排除浏览器与旧格式兼容问题。210 收藏 -
Go 中 defer 后修改变量却打印旧值,通常是因为参数在 defer 登记时已经求值。本文用最小示例区分参数快照与闭包读取,并给出日志、循环和命名返回值的选择方法。210 收藏 -
解释 Go TCPConn.CloseWrite 为什么只关闭本地发送方向,拆解已写入数据、FIN、服务端读取与 io.EOF 的关系,并给出发送完请求后继续读取响应的示例。210 收藏 -
Go copy 支持源切片与目的切片重叠。本文用区间和示例说明复制方向、返回值、插入删除写法,以及长度、容量和并发边界。210 收藏 -
Go net/http 中 204 No Content 的正确用法:服务端不要写正文,客户端按状态码决定是否解码响应体。210 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,AddCleanup 与 SetFinalizer 的对象约束、执行顺序、循环引用和取消方式都不同。本文用资源清理场景给出选择和迁移清单。210 收藏 -
解释 Go bytes.Clone 为什么能让副本与原切片隔离,覆盖切片头、底层数组、长度容量以及 nil 与空切片的边界。209 收藏 -
runtime.Pinner 可在 Go 1.21 及更高版本中显式固定 Go 对象。本文说明 cgo 参数的隐式固定边界、Pin/Unpin 最小写法、嵌套指针规则及跨调用保存指针时的生命周期管理。209 收藏 -
Go TLS 热更新证书不会让已经完成握手的旧长连接立即失效;新证书主要作用于后续握手,而恢复会话还有票据边界。本文按连接生命周期说明原子更新、失败回退、会话恢复与连接排空策略。209 收藏 -
Go range 遍历结构体切片时,循环变量拿到的是元素副本。本文说明为什么字段修改不会回写,并给出索引回写、指针切片和 map 结构体的正确处理方式。208 收藏 -
Go 反射中的无效 Value、nil 指针和类型零值不是一回事。本文用 IsValid、Kind、IsNil、IsZero 的安全顺序,解释 typed nil、nil slice、空 slice 和普通零值的区别,并给出可复用的分类函数。208 收藏 -
Go 的 replace 可以替换间接依赖,但它只改变主模块依赖图中的模块内容来源;是否进入图仍由 require 和模块图决定。本文用 MVS、go mod graph 与 go list -m all 给出判断方法。208 收藏 -
讲清 Go http.Client 如何借助 CookieJar 在重定向中按域名、路径和安全属性保留正确 Cookie,并给出公共后缀列表、CheckRedirect 与排查清单。206 收藏 -
Go 缓存与泄漏在 GC 看来都是可达对象。本文从 heap profile 的增长分配栈出发,沿根引用、容器和业务对象还原持有链,并用容量、TTL、清空及取消实验验证释放边界。206 收藏