一尘不染

Golang中的函数声明

go

似乎有两种不同的方法可以在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()

我发现它的原因可能也是因为我也编写了许多Javascript。在Go中,似乎很少有人看到像这样的函数var someFunc=func()。在这两个中,我们可以说哪个比另一个更正确吗?


阅读 232

收藏
2020-07-02

共1个答案

一尘不染

当你做

var someFunc = func(arg string) {}

您正在为该somefunc变量分配匿名函数。您也可以这样写:

somefunc := func(arg string) {}

创建函数的另一种方法是创建一个命名函数:

func somefunc(arg string) {}

命名函数只能在顶层声明,而匿名函数可以在任何地方声明。并main有特殊的意义,必须有所谓的命名函数mainmain包,这就是为什么你有在第二种情况下的错误。

2020-07-02