Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
type Rect struct{ W, H int }
func (r Rect) Area() int { return r.W * r.H }
func Area(w, h int) int { return w + h }
func main() {
r := Rect{2, 3}
fmt.Println(r.Area(), Area(2, 3))
}6 5
- Ждать ошибку компиляции: имя метода принадлежит его типу, поэтому метод
Rect.Areaи функцияAreaне конфликтуют. - Ждать, что оба вызова попадут в одну функцию:
r.Area()вызывает метод с получателемr, аArea(2, 3)— обычную функцию.
- Почему тип получателя метода должен быть объявлен в том же пакете?
- Как получатель позволяет вызывать метод как
c.Inc(), а неInc(c)?