我有这样的功能:
var flagvar int
func init() {
flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
}
我想在func main()
中调用它:
func main(){
init()
}
但它没有用,并告诉我init()
没有定义。
有什么问题?
答案 0 :(得分:5)
init
函数是Golang中的一个特殊函数。它是在第一次加载文件时执行的,因此您无需直接调用它。
来自官方文件:
最后,每个源文件都可以定义自己的niladic init函数来设置所需的状态。 (实际上每个文件可以有多个init函数。)最后意味着:在包中的所有变量声明评估了它们的初始值设定项之后调用init,并且只有在初始化了所有导入的包之后才对它们进行求值。