Go问答技术文章
-
从 sync.Pool.Put 的 nil 快速返回讲清未类型化 nil、typed nil 与 Pool.New 的边界,给出可复用临时对象时的类型断言、状态清理和安全兜底写法。189 收藏 -
Go ReverseProxy 转发后 Host 变化,通常是 Rewrite 中调用 SetURL 后出站 Host 跟随目标主机所致。本文区分 Request.Host、URL.Host 与 X-Forwarded-Host,并给出保留入站 Host、受控转发和迁移检查方法。189 收藏 -
Go x/text/number 的 Percent 把 1.0 定义为 100%,所以 0.12 会显示为 12%。本文区分比例与百分数输入,说明语言环境、小数位选项和重复放大的排查边界。189 收藏 -
解释Go请求体预读后出现EOF的原因,用有界缓存和独立Reader恢复下游读取,区分服务端Body与客户端GetBody,并说明读取失败、内存成本和关闭责任。189 收藏 -
Go HTTP 服务的 ReadHeaderTimeout 限制请求头读取,ReadTimeout 限制整个请求读取。本文说明零值回退与配置迁移,给出服务示例及日志定位方法,区分读取失败与业务耗时。188 收藏 -
io.Copy 会优先走源端 WriterTo,再看目标端 ReaderFrom;本文用原创示例说明 ReaderFrom 如何改变复制路径,以及如何用接口包装固定行为。188 收藏 -
解释 Go jsonschema 中 format 注解与断言的区别,示范显式草案、AssertFormat、自定义格式注册、错误记录与上线检查。188 收藏 -
Go 的 http.Cookie SameSite 只负责跨站发送限制,SameSite=None 还必须配合 Secure、HTTPS 和前端 credentials。本文用一个可复用的最小示例拆开这些条件,说明 Cookie 没有带上的常见原因与排查顺序。188 收藏 -
cgo 不会把 C union 和 bit-field 原样映射成可直接读取的 Go 字段。本文结合官方规则说明它们在 Go 侧的表示,并用 C 辅助函数把当前有效成员和位域值转换成普通 Go 标量。188 收藏 -
Go debug/dwarf.Reader.Seek 可以用 Entry.Offset 把 Reader 放回 DWARF info 区段中的指定条目,再调用 Next 继续先序遍历。本文用可复用的偏移索引示例说明如何处理 Children、零 Tag 结束标记和 SkipChildren,并用示例指标比较重复重扫与偏移跳转的成本。188 收藏 -
Go 并发计数的关键是让正数 Add 先于 Wait,通常把 Add 放在 go 语句之前,并在 goroutine 内用 defer Done 对称收口;较新版本还可以用 WaitGroup.Go 收拢这组动作。188 收藏 -
os.Rename 不是跨文件系统复制器:源文件和目标文件位于不同挂载或卷时,底层 rename 不能一次完成目录项变更。本文说明如何识别这类错误,并用目标目录内的临时文件实现可控的复制后删除。187 收藏 -
Go beep Streamer返回false只表示耗尽,正常读完和读取失败都可能进入该状态。本文说明n、ok与Err的分工,给出原创同步消费示例,并解释组合器错误传播、主动停止和资源关闭的区别。187 收藏 -
context.Cause只读取取消原因,不会关闭资源或等待协程退出。文章区分取消信号、阻塞点、资源所有权和结束确认,并用文件导出示例说明如何安排cancel、Close与返回结果。187 收藏 -
maps.EqualFunc 先比较两个 map 的长度,再按键查找并调用自定义值比较函数,所以 nil map 与空 map 都因长度为 0 而返回 true。本文拆解源码规则,给出最小示例,并说明如何在业务上区分 nil 与空。187 收藏