goland面试题第八天

本文介绍了Go语言中的init函数,强调了它们在包初始化中的作用,以及在不同包之间的执行顺序。同时,讨论了关于init函数的常见误区和规则。此外,文章还涉及了类型选择的语法,指出只有接口类型才能使用类型选择,并通过示例代码解释了相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第八天

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

  • A. 一个包中,可以包含多个 init 函数;
  • B. 程序编译时,先执行依赖包的 init 函数,再执行 main 包内的 init 函数;
  • C. main 包中,不能有 init 函数;
  • D. init 函数可以被其他函数调用;

自己解析:B  init函数是可以在main函数里面调用的  (我错误的以为init函数只能有一个init函数   应该是一个.go文件里面只能有一个init函数)

1.参考答案及解析:AB。关于 init() 函数有几个需要注意的地方:

  • init() 函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等;
  • 一个包可以出线多个 init() 函数,一个源文件也可以包含多个 init() 函数;
  • 同一个包中多个 init() 函数的执行顺序没有明确定义,但是不同包的init函数是根据包导入的依赖关系决定的(看下图);
  • init() 函数在代码中不能被显示调用、不能被引用(赋值给函数变量),否则出现编译错误;
  • 一个包被引用多次,如 A import B,C import B,A import C,B 被引用多次,但 B 包只会初始化一次;
  • 引入包,不可出现死循坏。即 A import B,B import A,这种情况编译失败;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值