Function Go函数声明语法

Function Go函数声明语法,function,syntax,go,Function,Syntax,Go,我刚开始学习语言,但仍在努力消化一些东西 我编写了一个函数add,如下所示: func add(a int, b int) int { return a + b } // works fine func add(a, b) int { return a + b } // ./hello.go:7: undefined: a // ./hello.go:7: undefined: b // Digested: May be I need to give type func add(a,

我刚开始学习语言,但仍在努力消化一些东西

我编写了一个函数
add
,如下所示:

func add(a int, b int) int {
  return a + b
}
// works fine

func add(a, b) int {
  return a + b
}
// ./hello.go:7: undefined: a
// ./hello.go:7: undefined: b
// Digested: May be I need to give type

func add(a, b int) int {
  return a + b
}
// works fine interestingly 

func add(a int, b) int {
  return a + b
}
// ./hello.go:7: final function parameter must have type
我真的很困惑或者由于缺乏知识而无法理解

最终函数参数必须具有类型

我在“”中提到:这解释了
a,b int

但是您需要有一个与函数的每个参数关联的类型,这在最后一个
inta,b
参数列表中不是这样

顺序始终为
var类型
,而不是
var类型
,如下所示:


您总是会在
标识列表
后找到一个类型:
a int
a,b int
以上所有内容都不完全正确。答案是Go允许您显式地为每个参数指定类型,如int、b int,或者使用更短的表示法,其中列出两个或多个以逗号分隔的变量,以类型结尾。因此,在a,b int的情况下,a和b都被定义为integer类型。您可以指定a、b、c、d、e、f int,在这种情况下,所有这些变量都将被分配一个int类型。这里没有“未定义”类型。上面所示的声明(a,b)形式的问题产生了一个错误,因为您没有为变量指定任何类型

Go类型声明的格式为
[,]*
,因此(在上一个示例中)声明了一个名为int的变量,类型为a,变量为b,没有类型。但是,请参阅,将参数“a”的顺序设置为“var type”会导致相同的错误。但是谢谢你的“识别列表”。这有助于我理解它的行为。我还想在Go中添加这一点,只要命名函数参数的类型相同,我们就可以忽略all的类型,除了last()
 VarSpec     = IdentifierList ( Type  [ "=" ExpressionList ] | "=" ExpressionList ) .