Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при сборке и запуске программы?
package main
import "fmt"
type Shape interface{ Area() float64 }
type Square struct{ Side int }
func (s Square) Area() int { return s.Side * s.Side }
func main() {
var sh Shape = Square{Side: 2}
fmt.Println(sh.Area())
}Не скомпилируется
- Ждать
4: тип реализует интерфейс, только если у каждого метода те же параметры и результаты, а этотAreaвозвращаетint, а неfloat64. - Ждать панику при запуске: компилятор проверяет методы при присваивании
Square{Side: 2}переменной типаShape, и программа не запускается.
- Как изменить
Square, чтобы программа скомпилировалась и напечатала4? - Почему Go проверяет реализацию интерфейса при компиляции, а не при вызове?