Golang中, 是否有某种访问控制机制? (类似Java的private等, 假如在Go中使用OOP编程) ?
实际现象
假设OOP是我写代码的主要抽象手段
假设: 访问控制必须从严( 参考: Java )
想实现
1) 如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。
2) 工具类不允许有 public 或 default 构造方法。
3) 类非 static 成员变量并且与子类共享,必须是 protected。
4) 类非 static 成员变量并且仅在本类使用,必须是 private。
5) 类 static 成员变量如果仅在本类使用,必须是 private。
6) 若是 static 成员变量,必须考虑是否为 final。
7) 类成员方法只供类内部调用,必须是 private。
8) 类成员方法只对继承类公开,那么限制为 protected。
预期现象
了解到: Go中, 首字母大写, 即为 public, 其余为private
但是手段不够「细粒度」
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
很抱歉,如果你需要OOP抽象手段,那Go语言并不适合你,因为Go是一门过程式语言(Go is a Procedural language. There are many more paradigms than Functional and OO, and many have come and gone in trends in the past.)
如果需要OOP作为主要工具,广泛使用的Java是一个很好的选择(跨平台使用字节码,只要对应平台有Java环境)。若是需要更高的性能和对跨平台要求不高,那么C++也是不错的选择,但需要代码编写人员对内存控制等方面有更深厚的功力。
参考链接:https://www.quora.com/Is-Gola...