登录
首页 >  Golang >  Go问答

“接口接受”是否会导致废弃工具的损坏?

来源:stackoverflow

时间:2024-02-15 10:18:23 340浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《“接口接受”是否会导致废弃工具的损坏?》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

弃用

支持将函数标记为已弃用的方式如下:

type mystruct struct {
}

// myfunc returns hello
// deprecated: use yourfunc
func (m mystruct) myfunc() string {
  return "hello"
}

现代 ide 将突出显示此函数的任何用法,并且 linter 也可能会引发警告(我没有亲自检查过这一点)

接受接口。返回结构。

一个流行的最佳实践是“接受接口。返回结构”。 - 这往往鼓励软件中的可靠设计。

但是,以下代码(遵循此最佳实践)隐藏了弃用警告:

// MyInterface specifies a single function that we require from a dependency
type MyInterface interface {
    MyFunc() string
}

func main() {

    var v MyInterface
    v = MyStruct{}
    v.MyFunc()

}

问题

这个问题有解决办法吗?

例如,如果我是库维护者:如何确保库用户看到我的弃用警告,他们也遵循最佳实践并定义自己的依赖项接口。


正确答案


这似乎是合乎逻辑的,因为接口的方法尚未被弃用。在这种情况下,将 deprecated: 行添加到接口函数可能会有所帮助(未测试,因为 vscode 尚未执行此操作)。

// myinterface specifies a single function that we require from a dependency
type myinterface interface {
    // deprecated: use yourfunc
    myfunc() string
}

在这种情况下,因为该接口只有 1 个函数,所以您应该弃用整个接口。据我所知,godoc/pkg.go.dev 支持,以 Queryer 为例。

// MyInterface specifies a single function that we require from a dependency
// Deprecated: use YourInterface
type MyInterface interface {
    MyFunc() string
}

以上就是《“接口接受”是否会导致废弃工具的损坏?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>