一尘不染

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

go

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

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


阅读 170

收藏
2020-07-02

共1个答案

一尘不染

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

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

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

2020-07-02