V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ryanking8215
V2EX  ›  程序员

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

  •  
  •   ryanking8215 ·
    ryanking8215 · 2014-07-09 10:28:26 +08:00 · 5723 次点击
    这是一个创建于 3825 天前的主题,其中的信息可能已经有所发展或是发生改变。
    golang在同一个package下的各文件里,不能有重名的函数和变量,有点不适应,c/c++都有static阿。

    小写只是控制外部模块能否访问,不是控制外部文件的。
    10 条回复    2014-07-09 13:02:12 +08:00
    xdeng
        1
    xdeng  
       2014-07-09 10:47:37 +08:00
    小写 不也 相当于 static 么?

    不是控制外部文件的。是什么意思?
    ryanking8215
        2
    ryanking8215  
    OP
       2014-07-09 10:57:17 +08:00
    @xdeng 比如有a.go,b.go,都是package main,都有func jjj() {}, 编译会报错
    rwx
        3
    rwx  
       2014-07-09 11:00:17 +08:00
    基本上跟class里的private成员一个意思。。都是自己人就别防着了
    一个包就是一个整体,分成多个文件是为了组织的好一些,为嘛还要每个文件单独开一个namespace?
    ryanking8215
        4
    ryanking8215  
    OP
       2014-07-09 11:00:44 +08:00
    go按照package来的,大写的符号能被其他package引用,小写的不能。但是在同一个package内,符号都是全局的
    ryanking8215
        5
    ryanking8215  
    OP
       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
        6
    ryanking8215  
    OP
       2014-07-09 11:21:32 +08:00
    而func init(){}又是特殊的,在每个文件内是独立的
    se77en
        7
    se77en  
       2014-07-09 12:52:24 +08:00
    你这个问题完全可以通过 method 解决
    fansekey
        8
    fansekey  
       2014-07-09 12:54:45 +08:00
    @se77en +1
    ryanking8215
        9
    ryanking8215  
    OP
       2014-07-09 12:58:38 +08:00
    @se77en 能详细说一下吗?
    ryanking8215
        10
    ryanking8215  
    OP
       2014-07-09 13:02:12 +08:00
    o,了解了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2691 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:59 · PVG 11:59 · LAX 19:59 · JFK 22:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.