7. 包

7.1 导出包标识符

首字母都为小写,这些标识符可以在包内自由使用,但是包外无法访问它们,首字母大写就可以让包外访问这些标识符。

7.2 import

导入包后自定义引用的包名

import (
    "crypto/rand"
    mrand "math/rand" // 将名称替换为mrand避免冲突
)

匿名导入包

import (
    _ "path/to/package"
)

匿名导入的包与其他方式导入包一样会让导入包编译到可执行文件中,同时,导入包也会触发 init() 函数调用。

init()

init() 在程序启动时做一些自己包内代码的初始化工作:

  • 它在 main() 函数执行前被自动调用,以深度优先顺序初始化。
  • 同一个包中的多个 init() 函数的调用顺序不可预期。
  • init() 函数不能被其他函数调用。

假设有这样的包引用关系:main→A→B→C,那么这些包的 init() 函数调用顺序为:

C.init→B.init→A.init→main

results matching ""

    No results matching ""