Potępienie
Obsługiwany sposób oznaczania funkcji jak przestarzałych wygląda mniej więcej tak:
type MyStruct struct {
}
// MyFunc returns hello
// Deprecated: Use YourFunc
func (m MyStruct) MyFunc() string {
return "hello"
}
Nowoczesne IDE będą wydzielać korzystanie z tej funkcji, a линтеры również mogą powodować ostrzeżenia (osobiście nie testowałem tego).
Bierz interfejsy. Zwracane struktury.
Popularne najlepsze praktyki - "Brać interfejsy. Zwracane struktury". - co, jak zwykle zachęca SOLIDNY projekt w oprogramowaniu.
Jednak poniższy kod, który należy w tym najlepszych praktyk, ukrywa ostrzeżenie o terminie ważności:
// 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()
}
Pytanie
Czy istnieje rozwiązanie tego problemu?
Gdybym był, na przykład, opiekunem biblioteki: jak mogę zagwarantować, że moje ostrzeżenia o nadchodzącym terminie zmiany będą widoczne dla użytkowników biblioteki, które także dążą wytycznych i określają swoje własne interfejsy zależności.