go的指针与函数

        值类型的类的方法,还是指针型的类的方法,实际上,只需要记住,区别就在于java的setter和getter可以改变变量的参数,而go中需要用指针类型的方法才能改变参数。

技术细节有:

1.所有的方法调用其实都是将对象作为方法的第一个参数进行传递的。例如a.func(),其实过程是func(a),只是一般隐去这个过程而已。这里a被称为方法的接收者。

2.实参传给形参过程中,系统会自动转换格式,这也就是如果实参是指针,形参是值,那么会获取值传递给形参;如果实参是值,形参是指针,那么会获取值得指针给形参。

3.方法的接受者,无论是值类型还是指针类型,接收者都可以调用它们。


另外需要注意:

1.赋值给接口的话是会报错的,因为赋值产生复制值,然后后面操作的都是复制值,这就失去意义了。所以赋值一般使用指针进行赋值,这点需要特别注意!要记住这点的关键在于赋值能否影响到值对象本身。ps:其实这种过程是可以的,只是完全没有意义,所以报错。

2.如果使用嵌套类型,那么操作的是嵌套的对象,所以传进去嵌套里面的值其实最后并没有变化。



可以参考文章: http://blog.csdn.net/u013790019/article/details/45397287

你可能感兴趣的:(go的指针与函数)