So, today while I was coding I found out that creating a function with the name init
generated an error method init() not found
, but when I renamed it to startup
it all worked fine.
Is the word "init" preserved for some internal operation in Go or am I'm missing something here?
You can also see the different errors you can get when using init
in 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
itself is managed by golang/cmd/gc/init.c
:
Now in 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".
*/
Its use is illustrated in "When is the init()
function in go (golang) run?"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With