• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ryanking8215
V2EX  ›  程序员

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

  •  
  •   ryanking8215 ·
    ryanking8215 · Jul 9, 2014 · 6264 views
    This topic created in 4349 days ago, the information mentioned may be changed or developed.
    golang在同一个package下的各文件里,不能有重名的函数和变量,有点不适应,c/c++都有static阿。

    小写只是控制外部模块能否访问,不是控制外部文件的。
    10 replies    2014-07-09 13:02:12 +08:00
    46fo
        1
    46fo  
       Jul 9, 2014
    小写 不也 相当于 static 么?

    不是控制外部文件的。是什么意思?
    ryanking8215
        2
    ryanking8215  
    OP
       Jul 9, 2014
    @xdeng 比如有a.go,b.go,都是package main,都有func jjj() {}, 编译会报错
    rwx
        3
    rwx  
       Jul 9, 2014
    基本上跟class里的private成员一个意思。。都是自己人就别防着了
    一个包就是一个整体,分成多个文件是为了组织的好一些,为嘛还要每个文件单独开一个namespace?
    ryanking8215
        4
    ryanking8215  
    OP
       Jul 9, 2014
    go按照package来的,大写的符号能被其他package引用,小写的不能。但是在同一个package内,符号都是全局的
    ryanking8215
        5
    ryanking8215  
    OP
       Jul 9, 2014
    @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
       Jul 9, 2014
    而func init(){}又是特殊的,在每个文件内是独立的
    se77en
        7
    se77en  
       Jul 9, 2014
    你这个问题完全可以通过 method 解决
    fansekey
        8
    fansekey  
       Jul 9, 2014
    @se77en +1
    ryanking8215
        9
    ryanking8215  
    OP
       Jul 9, 2014
    @se77en 能详细说一下吗?
    ryanking8215
        10
    ryanking8215  
    OP
       Jul 9, 2014
    o,了解了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2431 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:04 · PVG 00:04 · LAX 09:04 · JFK 12:04
    ♥ Do have faith in what you're doing.