Substituição
A forma com suporte de marcação funciona como preterido é algo como isto:
type MyStruct struct {
}
// MyFunc returns hello
// Deprecated: Use YourFunc
func (m MyStruct) MyFunc() string {
return "hello"
}
IDEs modernos vai destacar quaisquer usos para esta função e "linters" também pode aumentar avisos (eu não tenha verificado pessoalmente a este)
Aceitar interfaces. Voltar estruturas.
Um popular melhor prática é "Aceitar interfaces. Voltar estruturas." - o que tende a incentivar SÓLIDO design de software.
No entanto, o código a seguir - que segue esta melhor prática - esconde a substituição de aviso:
// 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()
}
Pergunta
Existe uma solução para este problema?
Se eu fosse, por exemplo, uma biblioteca de mantenedor: como posso garantir que a minha substituição avisos são vistos pelos usuários da biblioteca, que também estão seguindo as melhores práticas e a definição de seus próprios dependência de interfaces.