Go语言技术文章
-
RuneError 不能单独代表解码失败:DecodeRuneInString 返回 RuneError 且 size 为 1 时,才表示非空输入的 UTF-8 编码非法;合法的 U+FFFD 通常占 3 个字节,空字符串则返回 size 为 0。490 收藏 -
Go text/template 可通过 FuncMap 注册返回值与 error 的函数。本文结合状态报告示例说明注册顺序、Execute 错误链、缓冲输出和兼容处理,避免把半成品报告交付给调用方。490 收藏 -
从 context 没有传递、HTTP 请求未绑定 context 和自定义等待未监听 Done 三个角度,说明 Go 超时后下游仍在执行的原因与修正方式。490 收藏 -
bufio.Writer.Reset 可以复用内部缓冲区并切换下游 io.Writer,但会丢弃未 Flush 的数据并清除错误状态。本文用一个批量写入场景说明 Flush、Reset、资源关闭和并发边界。490 收藏 -
用 strings.CutPrefix 一次完成可选前缀的判断与去除,讲清命中、未命中、空前缀和旧写法迁移时的返回值,附可直接改造的 Go 示例。490 收藏 -
用 Go httptest.Server 搭建可控的外部 API 替身,检查请求方法、路径、请求体和响应错误,并处理响应体与测试服务的关闭边界。490 收藏 -
从 go env 确认 GOMODCACHE 实际路径,区分 GOPATH/pkg/mod 与 GOCACHE,再用父目录、属主和最小写入测试定位权限错误,并给出迁移与复查方案。490 收藏 -
Go errors.Join 会忽略真正 nil,全部成功返回 nil。通过可选检查示例解释混合输入、错误成员识别及带类型空指针的返回陷阱,并给出聚合错误的适用约定。489 收藏 -
runtime.KeepAlive 用于让持有原生句柄的 Go 对象在指定位置前保持可达,避免 finalizer 提前关闭资源。本文给出最小写法、放置位置、适用边界与常见误区。489 收藏 -
围绕 io/fs.ValidPath 说明 FS.Open 名称的相对路径规则、根路径语义、斜杠边界和自定义文件系统的入口检查方式。488 收藏 -
Go math/bits.OnesCount64 接收 uint64 并返回其中 1 bit 的数量。本文用位掩码示例说明调用方式、返回值和零值、全 1 值及输入类型选择。488 收藏 -
Go build tags 未选中目标文件时,先用 go list 看文件分类,再检查 //go:build 位置和布尔表达式,最后核对 GOOS、GOARCH、cgo 与 -tags。本文给出一套从现象到修复的排查顺序。488 收藏 -
Go race 没有报告某次数据竞争,并不等于代码绝对安全。本文从运行路径、并发时序、race 构建和 !race 文件四个方面拆解漏报原因,并给出一份可复查的测试覆盖清单。488 收藏 -
Go module replace 在 CI 中不生效,通常不是 replace 语法失效,而是 CI 读取了错误的主模块、缺少 require、精确版本没有命中,或本地替换目录没有随 checkout 进入构建环境。本文用 go env 与 go list 逐层定位并给出可提交的修正方式。488 收藏 -
Go gzip 生成文件无法解压,通常与 Writer.Close、底层文件关闭顺序或读取未到 EOF 有关。本文给出可靠写法和排查清单。488 收藏