Go函数声明语法

时间:2014-09-23 12:48:04

标签: function syntax go

我刚刚开始学习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, 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

我真的很困惑,或者由于缺乏知识而无法理解

的用例

final function parameter must have type

2 个答案:

答案 0 :(得分:1)

我在" IdentifierList"中提及Can you declare multiple variables at once in Go?:解释了a, b int

但是你需要有一个与函数的每个参数相关联的类型,而在上一个int a, b参数列表中却不是这样。

订单始终为var type,而不是type var,位于variable declaration spec之后:

 VarSpec     = IdentifierList ( Type  [ "=" ExpressionList ] | "=" ExpressionList ) .

您总是会在 IdentifierList之后找到类型:a inta, b int

答案 1 :(得分:1)

以上都不是很正确。答案是Go允许您显式地为每个参数提供类型,如 a int,b int ,或者使用较短的表示法,其中列出两个或多个由逗号分隔的变量,以类型。所以在 a,b int 的情况下 - a和b都被定义为整数类型。您可以指定 a,b,c,d,e,f int ,在这种情况下,所有这些变量都将分配一种 int 。这里没有“未定义”类型。上面显示的(a,b)形式的问题会产生错误,因为您根本没有为变量指定任何类型。