似乎有两种不同的方法可以在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()和之间有什么区别var someFunc = func()?
func someFunc()
var someFunc = func()
我发现它的原因可能也是因为我也编写了许多Javascript。在Go中,似乎很少有人看到像这样的函数var someFunc=func()。在这两个中,我们可以说哪个比另一个更正确吗?
var someFunc=func()
当你做
var someFunc = func(arg string) {}
您正在为该somefunc变量分配匿名函数。您也可以这样写:
somefunc
somefunc := func(arg string) {}
创建函数的另一种方法是创建一个命名函数:
func somefunc(arg string) {}
命名函数只能在顶层声明,而匿名函数可以在任何地方声明。并main有特殊的意义,必须有所谓的命名函数main的main包,这就是为什么你有在第二种情况下的错误。
main