diff options
author | Cuong Manh Le <cuong.manhle.vn@gmail.com> | 2021-08-22 12:07:14 +0700 |
---|---|---|
committer | Cuong Manh Le <cuong.manhle.vn@gmail.com> | 2021-08-23 17:29:25 +0000 |
commit | aeec6dbfe009f371021bddba13e2eb18e5d1a469 (patch) | |
tree | a7df0e5e6f98f63fc3f41f3585b3b581dbeb655f /doc | |
parent | f457ecc7f096c7e6b225003b583b989384ef0fcb (diff) | |
download | go-aeec6dbfe009f371021bddba13e2eb18e5d1a469.tar.gz go-aeec6dbfe009f371021bddba13e2eb18e5d1a469.zip |
spec: add example for method value in case of embedded method
So it's clear to the reader that if "M" is a promoted method from
embedded field "T", then "x.M" will be expanded to "x.T.M" during the
evaluation of the method value.
Fixes #47863
Change-Id: Id3b82127a2054584b6842c487f6e15c3102dc9fe
Reviewed-on: https://go-review.googlesource.com/c/go/+/344209
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/go_spec.html | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/doc/go_spec.html b/doc/go_spec.html index fd5fee46eb..22b616134a 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ <!--{ "Title": "The Go Programming Language Specification", - "Subtitle": "Version of Jul 26, 2021", + "Subtitle": "Version of Aug 23, 2021", "Path": "/ref/spec" }--> @@ -3000,6 +3000,18 @@ method value; the saved copy is then used as the receiver in any calls, which may be executed later. </p> +<pre> +type S struct { *T } +type T int +func (t T) M() { print(t) } + +t := new(T) +s := S{T: t} +f := t.M // receiver *t is evaluated and stored in f +g := s.M // receiver *(s.T) is evaluated and stored in g +*t = 42 // does not affect stored receivers in f and g +</pre> + <p> The type <code>T</code> may be an interface or non-interface type. </p> |