That sentence wouldn't be true, though. There is a call-expression shorthand, but the method does not actually get added to T - so, for example
var b bytes.Buffer b.WriteString("foo") // fine (&b).WriteString("foo") // the same, as it's just syntactic sugare r := strings.NewReader("foo") io.Copy(b, r) // error: bytes.Buffer does not implement io.Writer, Write has pointer receiver io.Copy(&b, r) // fine Method sets are relevant for interface implementation. On Mon, Feb 5, 2018 at 10:34 PM, <gtowns...@gmail.com> wrote: > This issue once puzzled me, too. It would help to add something to the > spec section on method sets <https://golang.org/ref/spec#Method_sets>. I > suggest something like this at the very end of the second paragraph: > > ... Additionally, if a receiver of type T is *addressable > <https://golang.org/ref/spec#Address_operators>*, its method set is > effectively extended to include the method set of *T (see *calls > <https://golang.org/ref/spec#Calls>*). > > > On Monday, February 5, 2018 at 12:53:32 PM UTC-7, Paul Jolly wrote: >> >> >> Take a look at https://golang.org/ref/spec#Calls: >> >> "A method call x.m() is valid if the method set of (the type of) x >> contains m and the argument list can be assigned to the parameter list of >> m. If x is addressable and &x's method set contains m, x.m() is shorthand >> for (&x).m()" >> > -- > 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.