Go问答技术文章
-
Go 1.24 的 os.OpenInRoot 如何安全打开不可信文件名?本文用目录逃逸、符号链接和错误分支说明 Root 的边界,并给出可核对的最小代码。381 收藏 -
json.Decoder 默认会忽略结构体中不存在的 JSON 字段。本文用兼容升级、管理接口和边界校验三个场景说明 DisallowUnknownFields 什么时候适合开启,以及如何识别 unknown field 错误。278 收藏 -
runtime/metrics.Read 只负责把运行时指标写入 Sample 的 Value。本文用动态发现、类型判断和采样快照说明如何稳定读取,避免把指标描述、样本槽位和 Value 类型混为一谈。418 收藏 -
Golang · Go问答 | 2天前 | 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 收藏 -
netip.ParseAddr 返回的 netip.Addr 是值类型,可以用 Compare 做排序和相等判断,但 IPv6 Zone、非法输入和零值仍要单独处理。本文用可运行示例拆开这些边界。133 收藏 -
crypto/rand.Read 的签名虽然返回 n 和 err,但当前 Go 文档规定它会填满切片且不返回错误。本文从 Reader、io.ReadFull 和失败测试边界解释为什么不能把部分字节当成可用随机值。461 收藏 -
解释 Go net/http 中 ResponseController.EnableFullDuplex 的适用边界,给出 HTTP/1 请求体与响应交错处理的最小示例、协议判断和中间件兼容检查。232 收藏 -
Go 解析流式 JSON 时遇到 SyntaxError,Decoder.InputOffset 能告诉你解码器已经读到哪个字节,但它不是行号也不是错误字符的万能定位器。本文用带换行的请求体演示如何结合错误信息、原始字节和 Decode 循环缩小排查范围。429 收藏 -
atomic.Uint64 适合维护并发计数,但一个已经使用过的值不能再通过复制传递。本文用请求计数器拆开 Add、Load、Store 和复制副本的边界,说明为什么会触发 go vet 警告,以及如何安全地初始化、读取和测试。379 收藏 -
Go 里用 sort.Slice 和 sort.SliceStable 排序时,真正容易忽略的是相等元素的顺序与 less 比较函数约束。本文用一组带优先级和序号的记录,演示两者差异、稳定排序的适用边界和可复查写法。142 收藏 -
Go 的 http.Transport.Clone 会复制 Transport 配置,但 TLSClientConfig 也有自己的复制边界。本文用一个双客户端场景说明修改克隆对象是否影响原对象,以及并发使用 Transport 时应避开的写法。492 收藏 -
strings.Builder.String 返回后继续写,旧字符串通常不会被业务代码直接改写,但 Builder 可能复用底层缓冲区并触发扩容。本文用源码和小实验拆开共享存储、扩容与 Reset 的边界。228 收藏 -
regexp.Regexp 默认采用左侧最先匹配的规则,调用 Longest 后会在同一起点优先选择更长结果。本文用路由前缀示例解释两种语义、并发边界与验证方法。255 收藏 -
sync.Map.LoadAndDelete 返回的 value 可能是 nil,但 loaded 仍能准确区分键不存在与键存在。本文用最小可运行示例说明原子删除、nil 值和重复读取的边界。500 收藏 -
io.Copy 返回的 written 和 err 如何判断传输是否完整?本文从写入中断现场出发,拆解 EOF、写入错误、短写入与大小核对的边界。180 收藏