2014-07-05 16 views
3

我有一個相當長的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

使用'go fmt'並不要再考慮格式化。你可以做些什麼來調整你的編輯器來智能地包裝長長的行,重構你的代碼或者只是和它一起生活...... – Simon

回答

4

這是分號插入規則的結果:http://golang.org/ref/spec#Semicolons。去自動插入一個分號就在第一行的末尾:

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) { 
} 

或通過保持一個逗號在第一行:

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

兩者都是gofmt有效。