Junior — Senior
49
Проверка возможности приведения одного интерфейса к другому в Go
Условие задачи
Нужно понять, какой результат получит программа. Вопрос: допустимо ли выполнить type assertion от одного интерфейса к другому и приведёт ли это к панике во время выполнения или же методы будут успешно вызваны.
type Foo struct{}
func (f *Foo) A() {}
func (f *Foo) B() {}
func (f *Foo) C() {}
type AB interface {
A()
B()
}
type BC interface {
B()
C()
}
func main() {
var a int
var f AB = &Foo{}
y := f.(BC) // сработает ли такой type-assertion?
y.A() // а этот вызов?
_ = y
}