Zestawy metod Go - Metoda wywołania dla typu wskaźnika * T z odbiornikiem T
Udać sięspec mówi:
Zestaw metod dowolnego innego typu T składa się ze wszystkich metod z typem odbiornika T. Zestaw metod odpowiedniego typu wskaźnika * T jest zbiorem wszystkich metod z odbiornikiem * T lub T (to znaczy, że zawiera także zestaw metod T).
Rozumiem to jako: T ma swój własny zestaw metod, podczas gdy * T ma swój własny zestaw metod oraz zestaw metod T, ponieważ może wyłuskać odbiornik * T na T i wywołać metodę. Dlatego możemy wywołać jakąś metodę z odbiornikiem * T typu zmiennego T.
Postanowiłem więc zweryfikować moją logikę:
package main
import (
"fmt"
"reflect"
)
type User struct{}
func (self *User) SayWat() {
fmt.Println(self)
fmt.Println(reflect.TypeOf(self))
fmt.Println("WAT\n")
}
func main() {
var user User = User{}
fmt.Println(reflect.TypeOf(user), "\n")
user.SayWat()
}
http://play.golang.org/p/xMKuLzUbIf
Jestem trochę zmieszany. Wygląda na to, że mogę wywołać metody „z * T” na T? Mam trochę szerszy przykładhttp://play.golang.org/p/RROPMj534A, co też mnie myli. Czy wnioskowanie jest odwrotnie?
Czy czegoś mi brakuje, czy moja logika jest nieprawidłowa?
Dzięki!