猿问

新来的,父母解释

    我是新手,遇到了一组我不明白的括号。


在下面的代码中,我使用了一个基本的 defer 语句来打印恐慌的输出。


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


显然我没有正确理解一些东西。我认为它上面的两行是函数的主体是错误的吗?如果它们是函数的主体,那么它之后的括号有什么作用。如果他们不是身体,那么有人可以解释这里发生了什么吗?


我在没有括号的情况下得到的错误是:


# 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")

}


慕娘9325324
浏览 166回答 1
1回答

三国纷争

从延迟规范:表达式必须是函数或方法调用;在您的情况下,它是一个函数调用:()调用函数)。如果没有(),它将是一个函数值。
随时随地看视频慕课网APP

相关分类

Go
我要回答