Go语言技术文章
-
Go 基准测试初始化被算进 ns/op 时,先确认计时边界。本文说明 b.Loop、b.N、ResetTimer、StopTimer 和 StartTimer 的正确分工,并处理每轮必须准备输入的场景。410 收藏 -
HTTP/2 的 GOAWAY 不是普通业务错误,它表示连接不再接受新流,并用 last-stream-id 划出可能已处理的范围。本文结合 Go net/http 的请求体重放条件,给出幂等请求、非幂等请求和监控证据的有限重试策略。410 收藏 -
Golang · Go教程 | 3星期前 | go · 数据库 · database/sql · Go database/sql Go Rows.NextResultSet Go 多结果集 Go Rows.Err
围绕 database/sql.Rows.NextResultSet 讲清多结果集的切换、每个结果集的扫描顺序,以及 Rows.Err 如何区分正常结束和迭代错误。410 收藏 -
io.TeeReader 没有内部缓冲,读取过程会把数据同步写给 Writer;如果 Writer 写入失败,错误会沿 Reader 的 Read 返回。本文从接口职责、n 与 err 的判断和适用边界解释这个看似延迟的错误。410 收藏 -
Go x/text/search 不是按字节或 rune 逐个比较文本,而是结合语言规则生成可比较的排序元素。因此带重音、大小写、宽度差异,甚至展开与合并关系的文本,可能在不同原始长度下匹配。本文说明 Matcher 选项、IndexString 返回区间和 Pattern 复用边界。410 收藏 -
Go strings.CutSuffix 用一个调用同时返回去掉固定后缀后的字符串和 found 状态,适合拆分文件扩展名。本文说明匹配、未匹配、空后缀和 Go 版本边界。410 收藏 -
Go 终端表格混排中文和英文时,不能用字节数或 rune 数量代替显示列宽。本文用 go-runewidth.Truncate 按单元格宽度截断,并说明尾标记预算、StringWidth、Wrap 与 Condition 的使用边界。410 收藏 -
本文用 strings.CutSuffix 处理重复后缀,说明它为什么只删除最外层一次、怎样区分未命中和空结果,以及什么时候应该循环剥离或限制次数。410 收藏 -
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 收藏