Hi all,

        I’m confused by the "method set" defined in go specification,any one 
can help explain?

        The Go Programming Language Specification says that :
        ```
        The method set of any other type T consists of all methods declared 
with receiver type T. The method set of the corresponding pointer type *T is 
the set of all methods declared with receiver *T or T (that is, it also 
contains the method set of T).
        ```
        but actually, the type T can use the method with receiver *T , which is 
described as bellow. 


### version
 1. Go: 1.14.2
 2. The Go Programming Language Specification: Version of Jan 14, 2020

### code
```
type T struct {
        ID   int64
        Name string
}

func (p T) GetNameA() string {
        return p.Name
}

func (p *T) GetNameB() string {
        return p.Name
}

func TestUser(t *testing.T) {
        obj := T{ID: 1, Name: "T"}
        na := obj.GetNameA()
        nb := obj.GetNameB()
        log.Printf("na=%v nb=%v", na, nb)
}
```

### output log
```
=== RUN   TestT
2020/09/04 17:12:52 na=T nb=T
--- PASS: TestT (0.00s)
PASS
```

Thanks

YUU

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/2A9FA227-E88B-4E2F-9244-59E2B5204FEE%40gmail.com.

Reply via email to