对象:方法表达式

本文介绍了Go语言中的方法表达式和方法值的概念。方法表达式将方法视为普通函数,需要显式传入receiver参数,而方法值则包含函数和当前实例。方法值调用过程涉及包装对象和实例信息,与闭包的实现方式相似。文章探讨了不同调用模式,并强调在使用方法值时要注意实例和方法的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法表达式

按调用方式不同,方法可分为expression和value两种模式。

  • 表达式模式将方法视作普通函数,须显式传入receiver参数。
  • 值模式打包receiver和function,以便传递和稍后调用。

方法本身可以看作函数,把函数赋值给一个变量很正常,同样的,方法也可以这样做,但是处理时候有两种方法,第一种用类型表达是一个普通的函数,因为它没有和实例相绑定,调用的时候必须显式的提供参数,第二种用实例表达是绑定方法,它带有两部分信息,第一是函数,第二是当前实例,接下来调用方法的时候自动展开。我们把第一种称之为方法表达式(Method Expression),没有和某个实例相绑定,只有函数,第二种称之为方法值(Method Value),有函数和当前对象实例复制品,实例复制品和参数有关系,如果是指针,复制品就是指针,如果是值类型,复制品就是完整的复制。它和闭包做法一样。

class A{
    a()
    b()
    c()
}

x = new A()
x.a()
x.b() //method call

A.a(x)
A.b(x) //method expression

var z = x.a //method value
z() //===>x.a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值