6
Jeśli mam dwa typy:Go - jak radzić sobie wspólnych pól między struct typów
type A struct {
X int
Y int
}
type B struct {
X int
Y int
Z int
}
Czy istnieje jakiś sposób, aby osiągnąć następujące bez konieczności dwie metody, biorąc pod uwagę, że zarówno dostęp identycznie nazwany pól i zwraca ich suma?
func (a *A) Sum() int {
return a.X + a.Y
}
func (b *B) Sum() int {
return b.X + b.Y
}
Oczywiście były metody X i Y, mogłem zdefiniować interfejs zawierający te dwie metody. Czy istnieje odpowiednik dla pól?
Jestem ciekawy, dlaczego zdecydowałeś się umieścić wskaźnik na A w B, zamiast bezpośrednio osadzać A w B. Chcesz się podzielić? – carbocation
@jpp: Tylko dlatego, że OP miał metodę na odbiorniku wskaźnika, więc pomyślałem, że będzie to bardziej przejrzyste. Również w niektórych przypadkach robi różnicę, np. Jeśli 'B' jest również wartością zamiast wskaźnika, i próbuje się go przekazać jako interfejs, jak na przykład: http://play.golang.org/p/k2e5saB7OI Ale to wydaje się mało prawdopodobne, biorąc pod uwagę ten przykład. –