转到:调用函数时如何使用命名参数?

时间:2019-09-23 20:31:59

标签: go

在使用命名参数时如何调用函数?

(如果不清楚什么是命名参数,下面是using them in Python的示例)

我想做的事的例子:

func Add(a int, b int) int {
  return a + b
}

func main() {
  c := Add(a: 1, b:3)
  return c
}

但是,以上内容给了我错误:

unexpected :, expecting comma or )

(在“ a”之后指的是“:”)

2 个答案:

答案 0 :(得分:1)

Go没有命名参数。我在转到命名参数中最了解的是使用结构作为输入。因此对于您的示例,您可以-

type Input struct {
  A int
  B int
}

func Add(in Input) int {
  return in.A + in.B
}

func main() {
  c := Add(Input{A: 1, B: 3})
  return c
}

答案 1 :(得分:1)

简而言之:Go语言不支持命名的args,但IDE支持(见下文)。

我同意命名参数可以在Go中使用。它可以帮助避免错误。例如,就在昨天,我的测试发现了一个错误,其中包含源和目标。 copy()(内置函数)的参数排在前面。

但是,Go可能拥有数百种有用的语言功能。我们尽量避免在语言中添加不必要的功能,以保持简单。在将Go用于大型项目之后,您将不胜感激与其他语言相比要简单得多的事情。 (我已经使用了十多种语言,而Go到目前为止最讨厌。)

但是实际上,如果您的IDE支持,您可以命名参数。例如,我使用GoLand,当您输入函数的参数时,它将在值前用冒号内联显示参数名称(浅灰色)。这甚至比您习惯的更好,因为您甚至不必键入名称!