go - 多行写长语句

标签 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
}

最佳答案

这是分号插入规则的结果:http://golang.org/ref/spec#Semicolons . Go 会自动在第一行的末尾插入一个分号:

func LongMethodName(param1 *Type1, param2 *Type2, param3 *Type3);
    (param4 *Type1, param5 *Type2, param6 *Type3) {

带分号的第一行实际上是一个有效的go表达式:It's an external function。然后,它尝试解析第二行但失败了!

您可以通过将左括号保留在第一行来包装它:

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 中都有效。

关于go - 多行写长语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24581974/

相关文章:

go - 从范围生成的值具有相同的指针值

go - 在嵌入式结构之间传递数据的最惯用的方法是什么?

go - 远程调试 Go REST 端点

go - 无法将结构指针分配给接口(interface)指针

卡在 Windows 10 上的 Go 程序

go - 在 Go 中命名标签的标准做法是什么?

go - 如何在方法中返回结构变量

mysql - 更新负载中包含的列

json - 尽快将 SQL 结果转换为 JSON

go - 为什么在 goroutine 的 select 中有一个 default 子句会使它变慢?