首页 > 解决方案 > 在 go lang 的包级别声明 main() 之外的匿名函数会出错

问题描述

在 main() 块之外声明匿名函数时出现编译错误。我很好奇 go 中匿名函数的作用域。分配给变量有效,但没有分配它不起作用。两段代码有什么区别???

此代码不起作用!`

package main
import "fmt"

func(){
      fmt.Println("Welcome! from Anonymous function")
}

func main() {
        printme := ()
}

`这段代码有效!

`

package main
import "fmt"

var pri = func(){
      fmt.Println("Welcome! from Anonymous function")
}

func main() {

        pri()
}

` 它为不工作部分给出的错误是:

命令行参数

./anony-func-2.go:8:7: 语法错误:意外 {,期望名称或 (./anony-func-2.go:8:8: 方法没有接收器 ./anony-func-2.去:14:14:语法错误:意外),期待表达式

标签: functiongoanonymous

解决方案


引用此博客

函数是一种特殊类型的main()函数,它是可执行程序的入口点。它不接受任何参数,也不返回任何内容。Go 会自动调用 main() 函数,因此不需要显式调用 main() 函数,每个可执行程序都必须包含单个 main 包和 main() 函数。

这意味着除了该main()函数之外不会调用其他函数,因此在外部有一个匿名函数是没有意义的,main()因为它无论如何都不会被调用。


推荐阅读