我看大部分情况下是不需要的,但是有时候要给读写的时候加个锁,这时候就貌似必须得有这个了。
如果一个 struct 有了 getter / setter 而其他的没有,就显得很不统一,最后的代码很难看的样子,有时候还记不住哪个有哪个没有了。
这样的问题咋解决?
如果一个 struct 有了 getter / setter 而其他的没有,就显得很不统一,最后的代码很难看的样子,有时候还记不住哪个有哪个没有了。
这样的问题咋解决?
1
mengzhuo Mar 22, 2016 via iPhone
囧
碰到这样的的说明你的上层接口设计不当 所有需要锁的地方都要用统一的 get set |
2
bcxx Mar 22, 2016
多用 interface ...
|
3
elgoog1970 Mar 22, 2016
go is not java
|
4
zonghua Mar 22, 2016
@elgoog1970 让我又想到了递归命名法, go is not java `ginj`
|
5
zyguan Mar 22, 2016
如果你的实现不可避免的存在竞争条件,那加锁也没什么可耻的。而且加锁也不是非要在 getter/setter 上加,别套用 java 的 synchronized ,完全可以在相关逻辑代码中加,如果逻辑复杂多处竞争,那你就真该考虑优化优化设计了。另外,既然用 go ,那还是尽量多用 channel 少用共享可变量吧。
|
6
darasion OP |