首页 > 试题广场 >

关于init函数,下面说法正确的是()

[不定项选择题]
关于init函数,下面说法正确的是()
  • 一个包中,可以包含多个init函数
  • 程序运行时,先执行导入包的init函数,再执行本包内的init函数
  • main包中,不能有init函数
  • init函数可以被其他函数调用
init 函数的特性是在包被引入时优先执行的函数,其主要作用是初始化当前 package 需要的常量、全局变量等。
我们先来理清楚一个概念:在Golang中,一个 package 包是可以用多个 *.go 文件拆分开表示的,Golang语法要求 go 文件的开头首行必须是 "package xxx ",如果不同的*.go 文件只要首行定义了相同的package(当然也需要是在同一个目录下),那么它们就是属于同一个package,显然我们是可以在每个go文件中定义一个 init 函数,这些 init 函数都属于同一个package。

A,题目说的是“一个包中”,按照package的定义和上面的解释,一个package是允许有多个init函数的,A正确。
B,考虑包之间的依赖关系,被依赖的包应该优先加载初始化,B正确。
C,main 包也是包呀,包中都可以有 init 函数,C错误。
D,两个特殊函数:main、init,均不能被显式调用,main 和 init 的调用都是由系统隐式调用执行的。
发表于 2019-05-23 12:29:59 回复(2)
更多回答
  1. init函数可以在任何包中有0个或1个或多个;
  2. 首先初始化导入包的变量和常量,然后执行init函数,最后初始化本包的变量和常量,然后是init函数,最最后是main函数;
  3. main函数只能在main包中有且只有一个,面包中也可以有0或1或多个init函数;
  4. init函数和main函数都不能被显示调用;
发表于 2018-04-11 09:55:31 回复(1)
B写成程序编译时,难道不是程序运行时吗
发表于 2019-11-12 03:00:44 回复(0)
虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。
发表于 2018-03-05 15:15:01 回复(0)
不能有返回值和函数(如果有那怎么自动执行,不能够被其他包调用那用返回值干嘛) init 函数的特性是在包被引入时优先执行的函数,其主要作用是初始化当前 package 需要的常量、全局变量等。 我们先来理清楚一个概念:在Golang中,一个 package 包是可以用多个 *.go 文件拆分开表示的,Golang语法要求 go 文件的开头首行必须是 "package xxx ",如果不同的*.go 文件只要首行定义了相同的package(当然也需要是在同一个目录下),那么它们就是属于同一个package,显然我们是可以在每个go文件中定义一个 init 函数,这些 init 函数都属于同一个package。 A,题目说的是“一个包中”,按照package的定义和上面的解释,一个package是允许有多个init函数的,A正确。 B,考虑包之间的依赖关系,被依赖的包应该优先加载初始化,B正确。 C,main 包也是包呀,包中都可以有 init 函数,C错误。
发表于 2021-02-25 11:22:02 回复(0)
这题有点问题,编译的时候不会直接执行函数内容吧
发表于 2020-03-08 15:48:48 回复(0)
一个go文件中可以有多个Init函数,同一个go文件的Init函数执行顺序就是从上到下
发表于 2023-03-01 11:55:09 回复(0)
D答案表达的意思不是很明确,如果一个文件中只有init函数,那么导入这个文件就相当于主动调用
发表于 2020-04-23 10:27:21 回复(0)
init函数可以在任何包中有0个或1个或多个; 首先初始化导入包的变量和常量,然后执行init函数,最后初始化本包的变量和常量,然后是init函数,最最后是main函数; main函数只能在main包中有且只有一个,面包中也可以有0或1或多个init函数; init函数和main函数都不能被显示调用;  因此选AB。
编辑于 2018-06-06 15:43:10 回复(0)