为什么有时在parens中有返回值,但有时在Go函数签名中没有?

为什么有时在parens中有返回值,但有时在Go函数签名中没有?,go,Go,我注意到Go函数签名有时在括号中有返回值,有时则没有。 这仅仅是一个品味的问题,还是选择一个比另一个有更深的含义 我查阅了go文档,以及博客文章中的go规范等,没有找到任何结论来回答这个问题。我遇到的大多数函数签名定义都掩盖了这一点,这就是为什么我认为答案是微妙的。 func Example(num int) (error){ .. } func Example(num int) error { .. } 如果函数有一个返回值,则表示有括号或无括号的相同内

我注意到Go函数签名有时在括号中有返回值,有时则没有。 这仅仅是一个品味的问题,还是选择一个比另一个有更深的含义

我查阅了go文档,以及博客文章中的go规范等,没有找到任何结论来回答这个问题。我遇到的大多数函数签名定义都掩盖了这一点,这就是为什么我认为答案是微妙的。

  func Example(num int) (error){
    ..
  }

  func Example(num int) error {
    ..  
  }

如果函数有一个返回值,则表示有括号或无括号的相同内容。不带括号通常是首选

如果函数有多个返回值,则需要括号

func Example() (string, error) {
    return "", nil
}
func Example() (s string) {
    s = ""
    return
}
如果有命名的返回值,则还需要括号

func Example() (string, error) {
    return "", nil
}
func Example() (s string) {
    s = ""
    return
}

不带括号总是首选,而不仅仅是典型的。这就是gofmt强制执行这种风格的原因。Downvote的意思是“这个问题没有显示任何研究成果;它不清楚或没有用处”。下层选民不需要进一步解释。在这种情况下,缺乏研究工作似乎是最有可能的解释。我已经看过了,但没有找到任何明确的解释。你的评论比否决票更有成效,因为它是可操作的。你看了哪里,为了什么?关于否决票的定义?将鼠标悬停在向下投票箭头上,您将看到我引用的文本。我无法帮助您找到幸福,但您可以帮助我找到答案:)