文档章节

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

© 著作权归作者所有

共有 人打赏支持
上一篇: go的变量作用域
下一篇: Go的闭包
刘地
粉丝 100
博文 52
码字总数 69858
作品 1
朝阳
私信 提问

暂无文章

Spring AOP 切面编程记录日志和接口执行时间

最近客户现在提出系统访问非常慢,需要优化提升访问速度,在排查了nginx、tomcat内存和服务器负载之后,判断是数据库查询速度慢,进一步排查发现是因为部分视图和表查询特别慢导致了整个系统...

编程SHA
13分钟前
3
0
年度大盘点:机器学习开源项目及框架

摘要: 2018年马上就要结束了,我们来回顾一下过去的这一年中,机器学习领域有哪些有趣的事情吧! 我们先来看看Mybridge AI 中排名靠前的顶级开源项目,再聊聊机器学习今年都有哪些发展,最后...

阿里云官方博客
17分钟前
3
0
15个Spring的核心注释示例

众所周知,Spring DI和Spring IOC是Spring Framework的核心概念。让我们从org.springframework.beans.factory.annotation和org.springframework.context.annotation包中探索一些Spring核心注......

java菜分享
19分钟前
0
0
[LintCode] Binary Tree Level Order Traversal(二叉树的层次遍历)

描述 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7 返回他的分层遍历结果: [ [3], [...

honeymose
28分钟前
1
0
renderer

renderer Function 单元格绘制处理函数,同drawcell事件。

architect刘源源
48分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部