英文:
Write long statement in multiple lines
问题
我有一个相当长的func
声明,我想将其拆分成几行:
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3) (param4 *Type1, param5 *Type2, param6 *Type3) {
...
return
}
这样写起来相当难以管理。
有没有一种方法可以将函数声明写成以下形式?
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3)
(param4 *Type1, param5 *Type2, param6 *Type3)
{
...
return
}
英文:
I have a quite long func
declaration that I would like to split into several lines:
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3) (param4 *Type1, param5 *Type2, param6 *Type3) {
...
return
}
it is quite unmanageable.
Is there a way of writing a function declaration as follows?
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3)
(param4 *Type1, param5 *Type2, param6 *Type3)
{
...
return
}
答案1
得分: 4
这是分号插入规则的结果:http://golang.org/ref/spec#Semicolons。Go会自动在第一行的末尾插入一个分号:
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3);
(param4 *Type1, param5 *Type2, param6 *Type3) {
带有分号的第一行实际上是一个有效的Go表达式:它是一个外部函数。然后,它尝试解析第二行并失败了!
你可以通过两种方式来修复它,一种是将开括号保留在第一行:
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3) (
param4 *Type1, param5 *Type2, param6 *Type3) {
}
或者在第一行保留一个逗号:
func LongMethodName(param1 *Type1, param2 *Type2,
param3 *Type3) (param4 *Type1, param5 *Type2, param6 *Type3) {
}
这两种方式在gofmt
中都是有效的。
英文:
This is a result of the semicolon insertion rule: http://golang.org/ref/spec#Semicolons. Go automatically inserts a semicolon right at the end of the first line:
<!-- language: lang-go -->
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3);
(param4 *Type1, param5 *Type2, param6 *Type3) {
The first line with the semicolon is actually a valid go expression: It's an external function. Then, it tries to parse the second line and fails!
You can wrap it either by keeping the opening parenthesis on the first line:
<!-- language: lang-go -->
func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3) (
param4 *Type1, param5 *Type2, param6 *Type3) {
}
or by keeping a comma on the first line:
<!-- language: lang-go -->
func LongMethodName(param1 *Type1, param2 *Type2,
param3 *Type3) (param4 *Type1, param5 *Type2, param6 *Type3) {
}
Both are valid in gofmt
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论