1
pathletboy 2016-09-02 22:09:33 +08:00
其实你把 struct 当成一个函数的参数就明了了,实际上,也是一个参数,隐含的参数。
函数传参可以传值或者传址,传值的好处是可以使得结构体只读,传址可以改变结构体的成员值。 |
2
rahuahua 2016-09-02 23:07:36 +08:00
好问题,暂时想不出为什么....
|
3
chzyer 2016-09-02 23:17:08 +08:00
我都是看老黄历来决定的
|
4
mengzhuo 2016-09-02 23:24:46 +08:00 via iPhone
不确定就用指针
只有 struct 足够小时(塞得进 L1 )传 struct ,因为指针还要多寻址一次 还有对象不传出函数的话怎么样都行 |
5
Comdex 2016-09-03 01:02:12 +08:00
1 楼正解
|
6
mind3x 2016-09-03 01:25:26 +08:00 via Android
理解了 immutability 的好处就能理解传值的好处了。
|
7
zeroday 2016-09-03 10:04:44 +08:00 via iPhone
1. receiver 通常用指针( ref:https://github.com/golang/go/wiki/CodeReviewComments#receiver-type)
2. Slices, maps, channels, strings, function values, and interface values 实现机制类似指针,所以可以直接传递 3. 大的结构体和将要修改的结构体用指针。因为指针拷贝代价小,并且可以直接操作对象。 |
8
darasion 2016-09-19 08:48:50 +08:00
绝大多数情况下,无脑使用指针即可。
一般的情况下,无意中就用值了,比如 type Foo int 的时候。 更少的情况下,不得不使用值的时候,自然会去选择用值。 |