在多行中写长语句

时间:2014-07-05 00:36:12

标签: go

我有一个很长的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
}

1 个答案:

答案 0 :(得分: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中都有效。