Go语言技术文章
-
Go RWMutex 并不是让新读者无限插队:写者一旦等待,新的 RLock 会被挡住。写锁仍然长期等待时,优先检查已经持有的读锁、RUnlock 配对、递归读锁、其他写者排队和写临界区长度。125 收藏 -
Go text/template 的 FuncMap 用来把 Go 函数注入模板。本文从解析前注册开始,说明单返回值、值加 error、管道传参和同名替换的边界,并给出可直接改造的模板示例。125 收藏 -
Go mod tidy 删除依赖后构建失败,通常是源码依赖图与实际构建输入不一致。本文从 tidy 差异、导入路径、生成代码、vendor、workspace 和 CI 入口逐层定位并给出可复查的修复方案。125 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · 错误处理 · go · 并发控制 · Go context cause 取消原因 WithCancelCause CancelCauseFunc
Go 1.20 起可以用 context.WithCancelCause 保存具体取消原因,再用 context.Cause 读取;本文区分 ctx.Err 的通用状态与 Cause 的诊断信息,并说明父子 context 的首次取消、nil cause 和超时 cause 边界。125 收藏 -
slices.Compact 会在原有切片上合并连续重复元素并返回缩短后的切片。本文说明如何接住返回值、判断底层缓冲是否复用,以及指针元素和容量边界的处理方式。125 收藏 -
httputil.ReverseProxy 的 ErrorHandler 专门接管后端请求失败和 ModifyResponse 返回的错误。本文说明默认 502 的触发范围,给出可脱敏记录请求上下文、区分取消与上游不可达的自定义处理器,并说明响应已写出和 body 复制失败时的边界。125 收藏 -
Go os.ReadDir 会按文件名返回目录项,但目录读取中途出错时也可能携带部分结果。本文区分完整清单与尽力读取,说明 DirEntry 的轻量用法,以及 File.ReadDir 的批量和 EOF 语义。125 收藏 -
Go image/color.NRGBA64 保存的是非预乘的 16 位颜色通道,但通过 color.Color.RGBA() 读取时会按 alpha 做预乘并以 uint32 返回。本文用具体数值拆开字段、接口和透明像素的差异,帮助你在颜色采样和图像处理代码中选对读取方式。125 收藏 -
遍历 tar 归档时,当前条目 Read 返回的 EOF 与 Reader.Next 返回的 EOF 含义不同。本文用循环示例说明正常结束、未读完条目、真实解码错误和空文件的处理边界。125 收藏 -
Golang · Go问答 | 4星期前 | CGO · 内存管理 · Go问答 · Go CGO unsafe.Pointer 指针传递 runtime/cgo.Handle runtime.Pinner
Go cgo 传指针最重要的不是指针类型,而是内存由谁分配、是否包含 Go 指针以及 C 是否会在调用返回后保存它。本文按临时借用、C 堆复制、runtime.Pinner 和 runtime/cgo.Handle 说明安全边界。124 收藏 -
Go t.Parallel 本身不是随机失败的根因,真正危险的是并行测试共享了会变化的进程级状态。本文从生命周期、共享资产和隔离策略入手,给出可重复排查清单。124 收藏 -
Go test -run 匹配的是测试名称而非文件名。通过包范围、正则锚点和子测试层级解释未执行现象,并区分缓存、跳过、未匹配与构建失败,给出准确命令及独立示例。124 收藏 -
Go 的 fs.ValidPath 只检查 fs.FS 路径名是否符合 slash-separated、unrooted 规则,不负责判断文件是否存在。本文用具体输入边界解释点号、斜杠、反斜杠和冒号,并给出放在 FS 调用入口的检查写法。124 收藏 -
解释 Go slog JSONHandler 的 JSON 字段顺序为何不能当作契约,并给出按键解析、稳定测试和固定文本格式化方案。124 收藏 -
Go x/text/runes 处理的是 UTF-8 文本中的 rune,不是可以直接按字节下标切开的字符。本文从 Remove、Map、If 和 transform.String 的关系出发,说明字节索引、分块读取与非法 UTF-8 的边界。124 收藏