#78991·Go

建议:明确排除Go 1兼容承诺中的出错信息

作者: jub0bs创建于 2026年4月28日更新于 2026年9月17日
标签DocumentationProposal

然而,没有明确排除错误消息。您可能不会认为这种遗漏是有问题的。在他的 GopherCon 2020 演讲中, @jba 表示: […] 我们都明白错误消息的文本仅仅是为人类而存在的,它绝不是 API 的一部分,像值和类型一样。可以说,大多数资深 Gopher 都默认理解这一点:错误消息的措辞不属于 go1compat,它可能在一个版本中改变,而程序不应依赖错误的 Error 方法的结果(例如,通过字符串匹配)。然而,这个排除可能并不明显,特别是对语言的新手;有些 Gopher 可能意识到这一点,但却无法预见到忽略它会使他们的程序变得脆弱。在 GitHub 上进行搜索确实表明,令人沮丧的是,许多 Go 程序依赖于字符串匹配来从错误消息中提取数据或区分不同的失败条件。不仅这种对错误消息的不清晰性无法阻止不良的做法,还在某种程度上阻碍了 go1compat 所覆盖代码的演进。最近的一个例子来自 Go 1.26.2 的 net/http/request.go 文件: