Go语言技术文章
-
解释 Go testing.T.Parallel 为什么要等父测试函数返回,拆解 t.Run、并行栅栏、共享资源和调试检查方法。409 收藏 -
Go 的 slices.SortStableFunc 会保留比较器判定为相等的元素在原切片中的相对顺序。本文用带 score 和 id 的记录演示比较器写法、稳定性测试、tie-breaker 的影响,以及原地排序和复制排序的选择。409 收藏 -
用 go test -benchmem 和 testing.B.ReportAllocs 读懂 B/op、allocs/op,再通过子基准、计时边界、逃逸分析与内存剖析定位 Go 基准中的临时对象来源。409 收藏 -
Golang · Go问答 | 1个月前 | error · api设计 · database/sql · Go问答 · database/sql errors.Is 错误封装 Go错误处理 错误转换 领域错误
Go 业务层通常不应直接暴露 sql.ErrNoRows 或具体驱动错误。本文用稳定领域错误、私有 cause、操作上下文和 errors.Is,兼顾调用方判断、内部诊断与数据库实现可替换性。409 收藏 -
Golang · Go问答 | 1个月前 | go · 文件上传 · Go教程 · net/http · Multipart表单 ParseMultipartForm mime/multipart Go文件上传 Go MultipartReader
MultipartReader 与 ParseMultipartForm 不是两种可叠加的读取方式,而是同一请求体的两种互斥所有权模型。本文结合标准库源码解释冲突标记、隐式触发入口、流式与整体解析示例,以及请求体上限、临时文件清理和中间件边界。409 收藏 -
Go 服务收不到 SIGTERM 时,先核对目标 PID,再比较容器入口是否把信号留在 shell,最后用 NotifyContext 把信号接入服务生命周期。本文只围绕 PID、容器入口和 Go 接收代码给出排查与选择方案。409 收藏 -
Go HTTP 客户端是否复用连接,关键在于共享 Transport、正确处理 Response.Body,并避免在每次请求中主动关闭 keep-alive。本文给出最小写法、连接池配置和 httptrace 排查方法。409 收藏 -
Scanner.End 返回 token.Pos。若要得到文件名、行号和列号,应使用初始化 Scanner 时的 token.File.Position 转换;所谓 PositionEnd 不一致通常是类型、字节偏移或合成 token 边界混用造成的。409 收藏 -
Go 1.27 的 encoding/json/jsontext 中,Token.Int、Uint、Float 等数值访问器为什么返回 error?本文按 JSON 数值形态说明语法错误、范围错误、截断和精度边界。409 收藏 -
Go constraint.PlusBuildLines 可以把 constraint.Expr 转成一组等价的 // +build 旧标签行。本文说明 Parse、转换错误、复杂表达式边界以及写回源文件时的新旧约束同步方法。409 收藏 -
Go expvar 可通过JSON接口暴露进程变量。本文从一个小服务出发,讲解指标语义、一次注册、显式路由、本机监听及采集结果的解释。409 收藏 -
Go checksum mismatch 不能靠盲目删除 go.sum 或关闭 GOSUMDB 解决。本文按公共模块、缓存污染、重新打标签和私有模块四种边界,给出一套保留完整性校验、可复查且适合提交到团队仓库的修复方法。409 收藏 -
Go types.Scope.Contains 接收的是 token.Pos,不是源码行号。本文从源码分析工具的实际排查场景出发,说明为什么行号比较会误判,以及如何用 FileSet、半开区间和完整位置安全判断作用域。409 收藏 -
go/types 的 Info.Selections 只记录值上的字段和方法选择,包限定名应从 Info.Uses 中读取。本文用 AST 和类型检查示例说明两类 SelectorExpr 的区别。409 收藏 -
Go 的 sha256.New 返回 hash.Hash;需要复用中间摘要时,应断言为 hash.Cloner 并检查 Clone 错误。本文结合 Sum 的非消费语义,说明公共前缀、多分支摘要和版本边界。409 收藏