如果您的代码如下:func MyFunc(a int, b int)
gofmt重写规则是否可以将其更改为:func MyFunc(a, b int)
我试过了:gofmt -r "f(x t, y t) -> f(x, y t)" myfile.go
但我明白了:parsing pattern f(x t, y t) at 1:5: expected ')', found 'IDENT' t
我也尝试过:gofmt -r "f(x int, y int) -> f(x, y int)" myfile.go
但它为int而不是t
提供了类似的错误我已阅读gofmt documentation。网络搜索没有任何帮助。
我故意使用单个字符标识符来匹配表达式。
我怀疑问题可能在于尝试匹配该类型,因为它可能不被视为“表达”
是否可以使用gofmt执行此操作?
答案 0 :(得分:3)
不,它不可能 - 因为fmt将模式视为" Expression",请查看http://golang.org/src/cmd/gofmt/rewrite.go parseExpr()函数。
转到规范(http://golang.org/ref/spec#Expressions) 清楚地说明了什么"表达式通过将操作符和函数应用于操作数来指定值的计算。" 所以去fmt尝试解析你的模式" f(x t,y t)"作为函数调用,所以不是" t"它需要逗号或括号。
你不能写出太多的模式" func MyFunc(一个int,b int)" - 因为它的函数定义,而不是有效的go表达式