我刚刚开始学习Go语言,仍然试图消化一些东西。我写了一个函数add:func add(a int, b int) int { return a + b}// works finefunc add(a, b) int { return a + b}// ./hello.go:7: undefined: a// ./hello.go:7: undefined: b// Digested: May be I need to give typefunc 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 回答
四季花海
TA贡献1811条经验 获得超5个赞
我IdentifierList
在“你能在 Go 中一次声明多个变量吗? ”中提到:这解释了a, b int
。
但是你需要有一个与函数的每个参数相关联的类型,这在最后一个int a, b
参数列表中不是这种情况。
顺序始终遵循变量声明规范var type
,而不是:type var
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
你会总能找到一个类型后一个IdentifierList
:a int
或a, b int
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
以上都不完全正确。答案是 Go 允许你明确地给出每个参数的类型,作为一个 int , b int,或者使用更短的符号,其中列出两个或多个由逗号分隔的变量,以类型结尾。所以在a,b int的情况下 - a 和 b 都被定义为整数类型。您可以指定a,b,c,d,e,f int,在这种情况下,所有这些变量都将被分配一种int类型。这里没有“未定义”类型。上面显示的声明的 (a,b) 形式的问题会产生错误,因为您根本没有为变量指定任何类型。
- 2 回答
- 0 关注
- 204 浏览
添加回答
举报
0/150
提交
取消