why i can't call init
function from the other function, init()
is just function right, why i can't just call the init
function, should i change golang RFC to make it happend
package main
import (
"fmt"
)
func init() {
fmt.Println("Hello, playground")
}
func main() {
go init()
fmt.Println("Hello, playground")
}
error :
./prog.go:12:8: undefined: init
The Go Programming Language Specification
the init identifier can be used only to declare init functions, yet the identifier itself is not declared. Thus init functions cannot be referred to from anywhere in a program.
To accomplish your objective, call a function.
For example,
package main
import (
"fmt"
)
func init() {
f("init")
}
func f(s string) {
fmt.Printf("f(%q)
", s)
}
func main() {
f("main")
}
Playground: https://play.golang.org/p/isyrCIeYCV4
Output:
f("init")
f("main")
init can not called, it will run when package loaded.
package main
import (
"fmt"
)
func init() {
fmt.Println("Hello, playground")
}
func main(){
}
result: Hello, playground