Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 从另一个函数调用init函数_Go_Rfc - Fatal编程技术网

Go 从另一个函数调用init函数

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

为什么我不能从另一个函数调用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: 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