This question already has answers here:
Why add “()” after closure body in Golang?

(4个答案)


6年前关闭。




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

在下面的代码中,我正在使用基本的defer语句来打印紧急情况的输出。

为了使代码正常工作,我必须在关闭花括号的函数结束后添加一个打开和关闭括号。

显然,我不太了解。我以为上面的两行是函数的主体吗?如果它们是函数的主体,那么在服务后,parens有什么作用。如果它们不是 body ,那么有人可以解释这里发生了什么吗?

我没有括号的错误是:
# 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")
}

最佳答案

Defer spec:



在您的情况下,这是一个函数调用:()调用该函数)。
没有(),它将是一个函数值。

您可以在“Why add “ () ” after closure body in Golang?”中看到更多信息。

关于go - 新增功能,括号中的解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26951568/

10-16 16:44