当前位置: 首页 > 面试题库 >

为什么不能在Go“ init”中命名一个函数?

顾俊哲
2023-03-14
问题内容

因此,今天在编码时,我发现使用该名称创建函数会init产生错误method init() not found,但是当我将其重命名为startup所有功能时,一切正常。

是为了在Go中进行某些内部操作而保留“ init”一词,还是我在这里丢失了一些东西?


问题答案:

是的,功能init()很特殊。加载程序包时,它将自动执行。甚至该程序包main也可能包含一个或多个init()在实际程序开始之前执行的功能:http
:
//golang.org/doc/effective_go.html#init

如语言规范所述,它是包初始化的一部分:http :
//golang.org/ref/spec#Package_initialization

它通常用于初始化包变量等。



 类似资料:
  • 不是内置函数或关键字,但是如果函数名为,为什么我不能调用它呢? 调试控制台中没有错误消息,如果我将其重命名为all2,该函数就会工作。 这是代码:在chrome和IE10中测试

  • 预计此函数将无法typeCheck。然而,没有解释发生这种情况的原因。在GHCI中试用时,我得到了以下输出: 为什么会出现这种情况?

  • 问题内容: 我试图按照教程进行操作,但是此代码对我不起作用。有人可以解释为什么以及如何解决吗?我认为这与ng-controller有关,但不确定为什么。 问题答案: 您的代码无法与angular 1.3+一起使用,因为您正在将控制器定义为全局函数。 从AngularJS文档中: 从1.2迁移到1.3 控制器 由于3f2232b5,$ controller将不再在窗口上查找控制器。在控制器上查看窗口

  • 问题内容: The Go Playground上可用的程序读取 并产生一个错误 我了解是字符串的“零值”。我不明白为什么我不能分配给我的。 问题答案: 简单的答案是, 在语言规范中未将其定义为类型的有效值。 …但是也许您想要更长的答案? 是指针,接口,通道,切片,映射和函数类型的零值,它表示 未初始化的 状态。 考虑以下变量声明: 所有这些变量都有一个代表未初始化状态的值,这很自然。已被声明为指针

  • 使用scandir()函数时,我收到以下php警告: Scandir无法打开目录:公共html/page2中不允许操作。php在线3 第2页。php 我想使用这个功能来打印我的根文件夹的文件和子目录,但它不工作。 有人知道怎么修吗?

  • 问题内容: 在Python中,有一个名为的内置函数。这用于获取对象的所有属性的列表。 我了解它的作用,但对为什么调用它感到困惑。这个名称与从对象获取属性有什么关系? 问题答案: 它给你一个 目录 对象的所有属性ectory。 这不是文件系统中使用的目录,而是标准用法:名称或数据列表。