在 Golang 中声明函数似乎有两种不同的方式,如下所示:
package main
import "fmt"
var someFunc = func(arg string) {
fmt.Println(arg)
}
func main() {
someFunc("Hello")
}
以上有效。但是,以下内容不起作用:
package main
import "fmt"
var someFunc = func(arg string) {
fmt.Println(arg)
}
var main = func() {
someFunc("Hello")
}
它会抱怨:
runtime.main: undefined: main.main
那么有什么区别func someFunc()
and var someFunc = func()
?
我发现这个的原因可能是因为我也编写了大量 Javascript。似乎在 Go 中,我很少看到人们声明这样的函数var someFunc=func()
。这两者之中,我们能说哪一个更正确呢?
当你这样做时
var someFunc = func(arg string) {}
您正在将一个匿名函数分配给somefunc
多变的。你也可以这样写:
somefunc := func(arg string) {}
创建函数的另一种方法是创建命名函数:
func somefunc(arg string) {}
命名函数只能在顶层声明,而匿名函数可以在任何地方声明。和main
有特殊含义,必须有一个名为的命名函数main
in the main
包,这就是为什么在第二种情况下出现错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)