Golang中能否为多个同类型函数参数合并声明类型?
问题
我有如下Go代码(实际代码的简易抽象版本):
package fiction import "fmt" func doSomething(height int, width int, printMe string) int { fmt.Println(printMe) return height * width }
我想将函数声明中的height int, width int部分改为height, width int的形式,修改后代码如下:
package fiction import "fmt" func doSomething(height, width int, printMe string) int { fmt.Println(printMe) return height * width }
请问这种写法是否可行?另外我希望避免使用可变参数,但若这是唯一解决方案也可告知(不过对我当前场景不适用)。
回答
这种写法完全可行,这是Go语言原生支持的参数声明语法:当多个连续参数的类型相同时,可以只在最后一个参数后声明一次类型,前面的参数省略类型声明,编译器会自动推断它们的类型与最后一个参数一致。
这种写法和可变参数没有任何关联,可变参数的语法是在类型前加...(比如args ...int),用于接收任意数量的同类型参数,和你这里合并同类型参数声明的场景完全不同。你修改后的代码不仅符合Go的语法规范,还让函数声明更简洁,是推荐的写法。
内容的提问来源于stack exchange,提问作者ellis hogan
相关产品推荐
相关产品推荐

