为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
哈士奇WWW 2021-08-16 15:55:26
所以,今天在我编写代码时,我发现使用名称创建一个函数会init产生一个错误method init() not found,但是当我将它重命名为startup它时一切正常。“init”这个词是为 Go 中的某些内部操作保留的,还是我在这里遗漏了什么?
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您还可以查看使用initin时可能遇到的不同错误golang/test/init.go


// Verify that erroneous use of init is detected.

// Does not compile.


package main


import "runtime"


func init() {

}


func main() {

    init() // ERROR "undefined.*init"

    runtime.init() // ERROR "unexported.*runtime\.init"

    var _ = init // ERROR "undefined.*init"

}

init本身由golang/cmd/gc/init.c:

现在在cmd/compile/internal/gc/init.go:


/*

* a function named init is a special case.

* it is called by the initialization before

* main is run. to make it unique within a

* package and also uncallable, the name,

* normally "pkg.init", is altered to "pkg.init·1".

*/


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信