init 函数

init 函数是一种特殊的函数, 它在程序运行时自动被调用, 用于执行一些初始化操作. 每个包(package)或文件都可以包含一个或多个 init 函数, 这些函数会在程序启动时按照一定的规则被自动调用.

init 函数具有以下特点:

  • init 函数没有参数和返回值.
  • init 函数不能被显式地调用, 它会在程序执行前自动被调用.
  • init 函数在程序运行时自动执行, 无需手动触发.
  • init 函数是可选的, 编写一个没有任何 init 函数的程序是完全可以的.
  • 在单个文件中,可以有多个 init 函数, 它们的执行顺序与声明顺序一致.
  • 对于一个包, 多个文件中声明的 init 则按照字典文件名顺序进行处理.
  • 在多个包中, init 函数的执行顺序是按照包的导入顺序确定的.
  • init 函数只会被执行一次,无论该包被导入多少次.

init 函数常用于执行一些初始化操作, 例如初始化包级别的变量、注册驱动程序、建立数据库连接等, 通过在 init 函数中进行这些操作, 可以确保它们在程序启动时自动完成. 需要注意的是, 虽然 init 函数在某种程度上可以用于程序的初始化, 但它不应该被滥用. 过多或复杂的初始化操作可能会导致代码难以理解和维护. 因此, 在使用 init 函数时应谨慎, 并确保其适度和合理性.

runtime 初始化每个导入的包, 初始化不是按照从上到下的导入顺序, 而是按照解析的依赖关系, 没有依赖的包最先初始化. 应用初始化时初始化工作的顺序是, 从被导入的最深层包开始进行初始化, 层层递出最后到 main 包. 每个包首先初始化包作用域的常量和变量(常量优先于变量), 然后执行包的 init 函数.

执行顺序: import –> const –> var –> init() –> main()

results matching ""

    No results matching ""