I don't understand. You are saying, that you want a method on a pointer to Age and then find it unreasonable, that you are getting a method on a pointer to Age?
If you don't want the argument to be a pointer, use Age.CanDrink instead. Both are valid, because the method set of *Age contains all methods declared on *Age or on Age (according to the spec <https://golang.org/ref/spec#Method_sets>). On Sat, Dec 10, 2016 at 8:17 AM, T L <tapir....@gmail.com> wrote: > > package main > > import "fmt" > import "reflect" > > type Age int > func (age Age) CanDrink() bool { > age++ > return age >= 18 > } > > func main() { > var age Age = 11 > > Age.CanDrink(age) > // (*Age).CanDrink(age) // cannot use age (type Age) as type *Age in > argument to (*Age).CanDrink > (*Age).CanDrink(&age) > fmt.Println(age) // 11 > > fmt.Println(reflect.TypeOf(Age.CanDrink)) // func(main.Age) bool > fmt.Println(reflect.TypeOf((*Age).CanDrink)) // func(*main.Age) bool > } > > Why is the parameter of (*Age).CanDrink is a pointer? It is not reasonable. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.