golang 怎么没有基于文件的私有函数和变量阿

2014-07-09 10:28:26 +08:00
 ryanking8215
golang在同一个package下的各文件里,不能有重名的函数和变量,有点不适应,c/c++都有static阿。

小写只是控制外部模块能否访问,不是控制外部文件的。
5717 次点击
所在节点    程序员
10 条回复
xdeng
2014-07-09 10:47:37 +08:00
小写 不也 相当于 static 么?

不是控制外部文件的。是什么意思?
ryanking8215
2014-07-09 10:57:17 +08:00
@xdeng 比如有a.go,b.go,都是package main,都有func jjj() {}, 编译会报错
rwx
2014-07-09 11:00:17 +08:00
基本上跟class里的private成员一个意思。。都是自己人就别防着了
一个包就是一个整体,分成多个文件是为了组织的好一些,为嘛还要每个文件单独开一个namespace?
ryanking8215
2014-07-09 11:00:44 +08:00
go按照package来的,大写的符号能被其他package引用,小写的不能。但是在同一个package内,符号都是全局的
ryanking8215
2014-07-09 11:12:56 +08:00
@rwx 我们是一个班的,但是你总不会让我翻你钱包吧。 :-),不抬杠了。
这个问题不是不好解决,换个名字就是了。
比如有个student,class的数据库,写个controller控制各自的CRUD
controller/student.go, controller/class.go,
本意想各自有create,delete,update等func,但是现在只能create_stu(),create_class()
有点罗嗦,应该也可通过OOP来解决, (s *Student)delete(),这个func有上下文了应该能区分了吧
ryanking8215
2014-07-09 11:21:32 +08:00
而func init(){}又是特殊的,在每个文件内是独立的
se77en
2014-07-09 12:52:24 +08:00
你这个问题完全可以通过 method 解决
fansekey
2014-07-09 12:54:45 +08:00
@se77en +1
ryanking8215
2014-07-09 12:58:38 +08:00
@se77en 能详细说一下吗?
ryanking8215
2014-07-09 13:02:12 +08:00
o,了解了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX