zoukankan      html  css  js  c++  java
  • 关于golang中包(package)的二三事儿

    golang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应。

    golang的package的特点:

    1、go的package不局限于一个文件,可以由多个文件组成。

      组成一个package的多个文件,编译后实际上和一个文件类似,组成包的不同文件相互之间可以直接引用变量和函数,不论是否导出;

      因此,组成包的多个文件中不能有相同的全局变量和函数(这里有一个例外就是包的初始化函数:init函数,下面还有讨论)

    2、go不要求package的名称和所在目录名相同,但是你最好保持相同,否则容易引起歧义。因为引入包的时候,go会使用子目录名作为包的路径,而你在代码中真正使用时,却要使用你package的名称。

    3、每个子目录中只能存在一个package,否则编译时会报错。

    4、go的package是以绝对路径GOPATH来寻址的,不要用相对路径来import

    关于package的初始化函数init的说明:(主要参考oygg2008大侠在某贴中的回复,我经过试验确实如此)

    每个package中应该是每个init都会被调用,且顺序固定
    1、对同一个go文件的init()调用顺序是从上到下的
    2、对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数,对于
    3、对不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init()
    4、如果package存在依赖,则先调用最早被依赖的package中的init()

  • 相关阅读:
    OpenERP Framework API存档
    OpenERP 7 picking order 继承需要注意的地方
    Unity战斗系统之AI自主决策
    简易2D横版RPG游戏制作
    UGUI之Canvas Group
    UGUI之Canvas和EventSystem
    NGUI之scroll view的制作和踩坑总结
    NGUI之Toggle实现单选框
    Unity中对象池的使用
    继承MonoBehaviour类的优缺点和相关报错
  • 原文地址:https://www.cnblogs.com/dajianshi/p/3596492.html
Copyright © 2011-2022 走看看