golang规范中有关方法值的部分中的“非接口方法”是什么意思?

Go 编程语言规范说:

与选择器一样,使用指针对具有值接收器的非接口方法的引用将自动取消对该指针的引用:pt.Mv 相当于 (*pt).Mv。

和:

与方法调用一样,使用可寻址值对具有指针接收器的非接口方法的引用将自动采用该值的地址:t.Mp 相当于 (&t).Mp。

那么,在给定的上下文中,什么是非接口方法呢?


慕妹3146593
浏览 96回答 2
2回答

明月笑刀无情

接口方法意味着您引用(您调用)的方法是对接口值(其方法集包含该方法)的调用。同样,非接口方法意味着您引用(调用)的方法不是对接口值(而是对具体类型)的调用。例如:var r io.Reader = os.Stdinr.Read(nil) // Interface method: type of r is an interface (io.Reader)var p image.Point = image.Point{}p.String() // Non-interface method, p is a concrete type (image.Point)要演示自动取消引用和地址获取,请参阅以下示例:type myint intfunc (m myint) ValueInt() int { return int(m) }func (m *myint) PtrInt() int { return int(*m) }func main() {    var m myint = myint(1)    fmt.Println(m.ValueInt()) // Normal    fmt.Println(m.PtrInt())   // (&m).PtrInt()    var p *myint = new(myint)    *p = myint(2)    fmt.Println(p.ValueInt()) // (*p).ValueInt()    fmt.Println(p.PtrInt())   // Normal}它输出(在Go Playground上尝试):1122

浮云间

type T struct {}func (t *T) f() {}func main() {  x := T{}  x.f()}上面,xf是一个非接口方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go