Go问答技术文章
-
gopls 0.23 移除了 fix、inspect 和 bug 子命令。本文按实际迁移边界说明 codeaction、remote、serve 的职责变化,并处理 importsSource 与 analyzer 配置兼容问题。443 收藏 -
围绕 strings.CutLast 的空分隔符、未命中和末尾分隔符场景,解释 found 返回值与 LastIndex 兼容实现的判断边界。243 收藏 -
Go 1.27 的 URL.Clone 会深拷贝 URL 字段,但 URL 本身保存的是 RawQuery 字符串;真正的 map[string][]string 需要用 Values.Clone 隔离。本文拆开两层边界,给出改参、写回和复查方法。459 收藏 -
Go 1.27 为 go test -json 的 output 事件增加可选 OutputType。通过 Action、Package、Test、OutputType 和 FailedBuild 的组合,解析器可以区分测试框架帧、失败首行、失败续报与构建失败,避免 CI 报告重复计数。467 收藏 -
Go 1.27 为 net/http.Server 增加 MaxHeaderValueCount。本文从单个请求头的多值限制讲起,说明默认行为、拒绝路径、代理链回归和兼容检查。305 收藏 -
Go 1.23 引入的 slices.Collect 会把 iter.Seq 收集为新切片,但空序列返回 nil,容量也不是 API 承诺。本文拆开 nilness、容量、元素别名和重复消费边界,给出稳定测试写法。416 收藏 -
Go 1.27 调整 go tool trace 的 -http 监听默认值。本文对比 :6060、127.0.0.1:6060 与 0.0.0.0:6060,说明本机和远程调试如何保留清晰的访问边界。293 收藏 -
Go 1.27 的 httptest.NewTestServer 把 HTTP 测试接入内存网络,适合和 testing/synctest 一起验证并发、超时与取消语义,但它不替代真实网络和部署验收。221 收藏 -
从 AddSource、Level 和 ReplaceAttr 三个配置点拆解 Go slog 的日志字段成本,给出保留源位置、裁剪路径和验收输出的实用方法。287 收藏 -
slices.SortStableFunc 并不会替你修正比较函数。本文从负、零、正返回值、相等元素保序和严格弱序三个边界,说明怎样写出可检查的稳定排序比较器。416 收藏 -
context.Err 和 context.Cause 不是同一个答案。本文用父子 Context、首个取消者和原因转发三个边界,说明为什么只能得到 context.Canceled,以及日志该如何记录。473 收藏 -
看到 Go 服务里的 channel 阻塞,先别急着判定 goroutine 泄漏。本文比较普通 goroutine 栈与 Go 1.27 goroutineleak profile 的证据边界,给出一套可复核的排查和上线清单。160 收藏 -
Go 1.27 会让 go.mod 中 go 1.27 及以上的模块在 traceback 首行显示 runtime/pprof goroutine 标签。本文区分标签来源和展示开关,并给出 go.mod、go.work、//go:debug 与 GODEBUG=tracebacklabels=0 的控制边界。295 收藏 -
Go 1.27 永久移除 asynctimerchan,time 包定时器通道始终使用同步语义。本文从版本、配置、cap/len 和 Stop/Reset 回归四个边界,给出旧行为排查方法。385 收藏 -
Go 1.27 新增 bytes.CutLast,用一个 found 布尔值和 before、after 两个切片处理最后分隔符;本文对照 LastIndex 说明未找到分隔符时的返回边界与迁移写法。137 收藏