潍坊市论坛

注册

 

发新话题 回复该主题

Go语言基础教程数据传递和指针 [复制链接]

1#
白癜风诊疗康复 http://m.39.net/disease/a_5633246.html

数据传递和指针

首先说明一个观点:go语言里面的数据传递全部都是值传递。这一点可以举个例子说明:

声明一个arr数组,然后在modify里面修改。学过Java或者C++的同学应该都明白,这个修改是会直接在原数组上修改。也就是说参数传递是引用传递,但是在go里面不是这样的,他是值传递。可以看一下打印结果:

还是1没变。这应证了我们的说法。再举个例子:

你会发现其实person.name还是ss,完全没变。这也就验证了我们说的,go里面所有的参数传递全部都是引用传递。这其实会带来相当大的问题:

(1)性能问题。这个是显然的,如果你的数组很大,那么就会有copy的开销。而且不容忽视

(2)修改无法生效。就像刚才我们演示的那样,其实你只能做读操作,写操作是没法生效的。

怎么解决这个问题呢?这就要用到指针的概念了。

指针

这个如果学过c++/c的同学可能会很懂,但是没关系,我先解释一下最基础的概念。

变量的

分享 转发
TOP
发新话题 回复该主题