-
从 AddSource、Level 和 ReplaceAttr 三个配置点拆解 Go slog 的日志字段成本,给出保留源位置、裁剪路径和验收输出的实用方法。
-
slices.SortStableFunc 并不会替你修正比较函数。本文从负、零、正返回值、相等元素保序和严格弱序三个边界,说明怎样写出可检查的稳定排序比较器。
-
Go 1.27 改进 compress/flate 编码速度后,同一输入的压缩字节可能变化,gzip、zip、zlib 和 png 也可能出现派生差异。本文从 CI 快照失败入手,给出区分字节变化与数据损坏的检查方式,并把测试改成稳定的语义断言。
-
Go 1.27 调整 go tool trace -http 的默认监听行为。本文用一个小型诊断工具说明只写端口、显式写 localhost 和绑定远程地址的差异,并给出升级后可复查的监听边界清单。
-
context.Err 和 context.Cause 不是同一个答案。本文用父子 Context、首个取消者和原因转发三个边界,说明为什么只能得到 context.Canceled,以及日志该如何记录。
-
Go 1.27 将 unicode 包及相关支持从 Unicode 15 升到 Unicode 17。本文用 RangeTable、IsLetter、IsDigit 和 UTF-8 校验拆开说明升级后业务字符规则的回归边界。
-
看到 Go 服务里的 channel 阻塞,先别急着判定 goroutine 泄漏。本文比较普通 goroutine 栈与 Go 1.27 goroutineleak profile 的证据边界,给出一套可复核的排查和上线清单。
-
Go 1.27 的 go/constant.StringLen 能在不完整构造字符串的情况下计算字符串常量长度。本文用最小示例说明它与 StringVal 的区别、UTF-8 字节边界、Unknown 行为、非字符串 panic 以及旧版本降级方式。
-
Go 1.27 会让 go.mod 中 go 1.27 及以上的模块在 traceback 首行显示 runtime/pprof goroutine 标签。本文区分标签来源和展示开关,并给出 go.mod、go.work、//go:debug 与 GODEBUG=tracebacklabels=0 的控制边界。
-
Go 1.27 为 go/scanner.Scanner 增加 End 方法。本文用 token.Pos、token.File.Offset 和半开区间说明它如何给源码分析工具提供可靠的 token 结束位置,避免继续手算偏移。
-
Go 1.27 永久移除 asynctimerchan,time 包定时器通道始终使用同步语义。本文从版本、配置、cap/len 和 Stop/Reset 回归四个边界,给出旧行为排查方法。
-
Go 1.27 为 go/types 增加 Hasher 与 HasherIgnoreTags。本文用结构体标签和 maphash 说明两套类型等价关系如何生成一致缓存键,以及碰撞、种子和并发边界。
-
Go 1.27 新增 bytes.CutLast,用一个 found 布尔值和 before、after 两个切片处理最后分隔符;本文对照 LastIndex 说明未找到分隔符时的返回边界与迁移写法。
-
Go 1.27 为 QUIC 服务端握手增加 QUICConfig.ClientHelloInfoConn,用来指定 ClientHelloInfo.Conn 的底层连接。本文区分 TLS Conn、QUICConn 与底层 net.Conn,说明只读边界和回调取值方式。
-
Go 官方 watchflakes issue #81328 记录了 cgo_stale 在 ppc64 构建器的 signal: killed。本文从测试脚本、CGO_CFLAGS、GOCACHE 与编译器日志入手,说明为什么不能把资源终止误判成缓存陈旧,并给出可复查的证据链。