新的去,paren解释

时间:2014-11-15 22:38:37

标签: go

我是新来的,遇到了一些我不理解的问题。

在下面的代码中,我使用基本的延迟语句来打印恐慌的输出。

要使代码生效,我必须在我的函数结束大括号后添加一个打开和关闭的paren。

显然我并不理解。我认为它上面的两条线是函数体是不正确的吗?如果它们是功能的主体,则它在服务后的用途是什么目的。如果他们不是身体,那么有人可以解释这里发生了什么吗?

没有parens我得到的错误是:

# command-line-arguments ./goTemplate.go:14: syntax error: argument to go/defer must be function call

package main
import "fmt"

func main(){
    defer func() {
        str := recover()
        fmt.Println(str)
    }()
    fmt.Println("Hello, World")
    panic("PANIC")
}

1 个答案:

答案 0 :(得分:1)

来自Defer spec

  

表达式必须是函数或方法调用;

在你的情况下,它是一个函数调用:()调用函数 如果没有(),它将是一个函数 value

您可以在" Why add “()” after closure body in Golang?"。

中查看更多内容