文档章节

go的方法

刘地
 刘地
发布于 2013/07/29 21:31
字数 231
阅读 41
收藏 0
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

© 著作权归作者所有

共有 人打赏支持
刘地
粉丝 100
博文 52
码字总数 69858
作品 1
朝阳

暂无文章

linux学习-0919

linux和windows互传文件 用户配置文件和密码配置文件 用户组管理 用户管理 一、linux和windows互传文件 linux和windows可以互相传输文件,但是需要使用xshell 并且安装lrzsz包: yum insta...

wxy丶
31分钟前
1
0
收集几个开源的微信小程序开发框架

1、 mpvue mpvue 是美团点评开源的一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小...

哥本哈根的小哥
38分钟前
1
0
Golang CSP并发模型

今天介绍一下 go语言的并发机制以及它所使用的CSP并发模型 CSP并发模型 CSP模型是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型。 CS...

xtof
38分钟前
1
0
用chrome在电脑上模拟微信内置浏览器

先了解安卓微信和Ios微信的UA(User agent:用户代理) 安卓微信UA: mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus build/jzo54k) applewebkit/534.30 (khtml, like gecko) ve......

可达鸭眉头一皱
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部