弃用
将函数标记为已弃用的受支持方式如下所示:
type MyStruct struct {
}
// MyFunc returns hello
// Deprecated: Use YourFunc
func (m MyStruct) MyFunc() string {
return "hello"
}
现代 IDE 将突出显示此函数的任何用法,并且 linter 也可能会发出警告(我没有亲自检查过)
接受接口。返回结构。
一个流行的最佳实践是“接受接口。返回结构”。- 这往往会鼓励软件中的 SOLID 设计。
但是,以下代码(遵循此最佳实践)隐藏了弃用警告:
// 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()
}
问题
这个问题有解决方案吗?
例如,如果我是库维护者:我如何确保库的用户看到我的弃用警告,他们也遵循最佳实践并定义自己的依赖接口。