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.


智慧大石
浏览 205回答 2
2回答

四季花海

我IdentifierList在“你能在 Go 中一次声明多个变量吗? ”中提到:这解释了a, b int。但是你需要有一个与函数的每个参数相关联的类型,这在最后一个int a, b参数列表中不是这种情况。顺序始终遵循变量声明规范var type,而不是:type var VarSpec     = IdentifierList ( Type  [ "=" ExpressionList ] | "=" ExpressionList ) .你会总能找到一个类型后一个IdentifierList:a int或a, b int

小怪兽爱吃肉

以上都不完全正确。答案是 Go 允许你明确地给出每个参数的类型,作为一个 int , b int,或者使用更短的符号,其中列出两个或多个由逗号分隔的变量,以类型结尾。所以在a,b int的情况下 - a 和 b 都被定义为整数类型。您可以指定a,b,c,d,e,f int,在这种情况下,所有这些变量都将被分配一种int类型。这里没有“未定义”类型。上面显示的声明的 (a,b) 形式的问题会产生错误,因为您根本没有为变量指定任何类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go