go的方法
博客专区 > 刘地 的博客 > 博客详情
go的方法
刘地 发表于4年前
go的方法
  • 发表于 4年前
  • 阅读 37
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

receiver为值的方法,编译器实现了对应的receiver为指针的方法,不是简单的取值后调用的包装,而是真正操作该字段
receiver为指针的方法,则没有实现对应的receiver为值的方法,值可以调用只是语法糖(取指针后调用)
编译器对接口则没有语法糖提供
method-value绑定的receiver在绑定时就确定了,乃是一个拷贝,而非外部变量

method-expression则与普通的函数无异(注意receiver类型的不同)

package main

type INT int

func (i INT) A() {
	print(int(i)," ")
}

func (i *INT) B() {
	print(int(*i)," ")
}

func (i INT) C() {
	i+=1
}

func (i *INT) D() {
	*i+=1
}

func main() {

	var i INT
	j:=&i
	a:=i.A
	b:=i.B
	c:=INT.A
	d:=(*INT).B
	
	i.B()
	i.C()
	i.B()
	i.D()
	i.B()
	
	print("\n-------\n")
	
	j.B()
	j.C()
	j.B()
	j.D()
	j.B()
	
	print("\n-------\n")
	
	a()
	b()
	c(i)
	d(&i)
	
	print("\n-------\n")
	
	i=INT(2)
	a()
	b()
	c(i)
	d(&i)
}

// 0 0 0 0
// -------
// 0 1 1 1
标签: go golang method
共有 人打赏支持
粉丝 100
博文 52
码字总数 69858
作品 1
×
刘地
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: