我刚刚开始学习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。
发布于 2014-09-23 13:03:37
我在“你能一次在Go中声明多个变量吗?”中提到了你能一次在Go中声明多个变量吗?:这解释了a, b int。
但是您需要有一个与函数的每个参数相关联的类型,这在上一个int a, b参数列表中不是这样的。
顺序总是var type,而不是type var,在变量声明规范之后
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .总是在IdentifierList:a int或a, b int之后找到类型
发布于 2015-05-09 21:14:22
上述任何一项都不完全正确。答案是Go允许您显式地给出每个参数的类型,作为int、b int,或者使用较短的符号,其中列出两个或多个以逗号分隔的变量,以类型结尾。因此,在a,b的情况下,int -a和b都定义为整数类型。您可以指定a,b,c,d,e,f int,在这种情况下,所有这些变量都将被赋予一种int类型。这里没有“未定义”类型。上述声明的(a,b)形式的问题会产生一个错误,因为您根本没有为变量指定任何类型。
https://stackoverflow.com/questions/25995539
复制相似问题