Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Анализатор обнаружил type assertion, который никогда не завершится успешно, потому что оба интерфейса содержат метод с одинаковым именем, но разными сигнатурами.
Рассмотрим пример:
type Validator interface {
Validate() error
}
type ContextValidator interface {
Validate(map[string]string) error
}
func check(v Validator) {
....
if cv, ok = v.(ContextValidator); ok {
....
}
....
}
В примере утверждение типа v.(ContextValidator) никогда не будет истинным, т. к. сигнатуры метода Validate у интерфейсов Validator и ContextValidator отличаются.
Такой type assertion будет иметь смысл только в том случае, если сигнатуры метода Validate будут одинаковыми:
type Validator interface {
Validate() error
}
type ContextValidator interface {
Validate() error
}
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: