Go 从另一个函数调用init函数
为什么我不能从另一个函数调用init函数,init就是正确的函数,为什么我不能调用init函数,我应该改变golang RFC来实现它吗Go 从另一个函数调用init函数,go,rfc,Go,Rfc,为什么我不能从另一个函数调用init函数,init就是正确的函数,为什么我不能调用init函数,我应该改变golang RFC来实现它吗 package main import ( "fmt" ) func init() { fmt.Println("Hello, playground") } func main() { go init() fmt.Println("Hello, playground") } 错误: ./prog.go:12:8: und
package main
import (
"fmt"
)
func init() {
fmt.Println("Hello, playground")
}
func main() {
go init()
fmt.Println("Hello, playground")
}
错误:
./prog.go:12:8: undefined: init
init标识符只能用于声明init函数,但
标识符本身没有声明。因此,不能使用init函数
从程序中的任何地方引用
要实现目标,请调用函数
比如说,
package main
import (
"fmt"
)
func init() {
f("init")
}
func f(s string) {
fmt.Printf("f(%q)\n", s)
}
func main() {
f("main")
}
游乐场:
输出:
f("init")
f("main")
无法调用init,它将在加载包时运行
package main
import (
"fmt"
)
func init() {
fmt.Println("Hello, playground")
}
func main(){
}
结果:您好,游乐场init和main一样,是一个特殊的函数。如果您希望能够从其他地方调用其功能,请将其放在不同的函数中,然后从init调用该函数。init函数与其他函数一样特殊。应用程序代码无法调用具有该名称的函数。通过为函数使用不同的名称修复应用程序。请注意,上面的程序还有另一个问题:不能保证goroutine会在程序退出之前执行。注意:init标识符只能用于声明init函数,但标识符本身没有声明。因此,不能从程序中的任何位置引用init函数。这是语言设计师有意为之。这是一个完全不同的问题@tim cooper