Go Wiki:已弃用

有时,API 功能(例如结构字段、函数、类型,甚至整个软件包)会变得多余或不必要。当我们希望阻止新程序使用它时,我们会将该功能标记为“已弃用”。

与其他一些系统不同,API 功能被弃用并不意味着它将在未来被移除。相反,Go 1 兼容性意味着该功能将以其已弃用的形式保留,以保持现有程序的运行。

要表示不应使用标识符,请在其文档注释中添加一个段落,该段落以 Deprecated: 开头,后面是有关弃用的某些信息,以及有关在适用的情况下改用什么的建议。该段落不必是文档注释中的最后一段。

一些工具会警告已弃用标识符的使用,并且它们的文档 在 pkg.go.dev 上被隐藏

如果函数 F1 被函数 F2 替换,并且 F2 可用的第一个版本是 Go 1.N,则 F1 的正式弃用通知不应在 Go 1.N+1 之前添加。这可确保 Go 开发人员仅在所有受支持的 Go 版本都包含 F2 且他们可以轻松切换时才将 F1 视为已弃用。

标记 API 功能已弃用可能会为使用该功能的数百万 Go 开发人员带来工作和决策。弃用 API 功能是一项 API 更改,必须使用 提案流程 进行讨论。

示例

type ResponseRecorder struct {
    // HeaderMap contains the headers explicitly set by the Handler.
    // It is an internal detail.
    //
    // Deprecated: HeaderMap exists for historical compatibility
    // and should not be used. To access the headers returned by a handler,
    // use the Response.Header map as returned by the Result method.
    HeaderMap http.Header
// Package rc4 implements the RC4 stream cipher.
//
// Deprecated: RC4 is cryptographically broken and should not be used
// except for compatibility with legacy systems.
//
// This package is frozen and no new functionality will be added.
package rc4

标准库中还有其他一些示例 在标准库中


此内容是 Go Wiki 的一部分。