如果您有如下代码: func MyFunc(a int, b int)
func MyFunc(a int, b int)
gofmt重写规则可以将其更改为: func MyFunc(a, b int)
func MyFunc(a, b int)
我试过了: gofmt -r "f(x t, y t) -> f(x, y t)" myfile.go
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
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
gofmt -r "f(x int, y int) -> f(x, y int)" myfile.go
但这给int而不是t带来了类似的错误
我已经阅读了gofmt文档。网络搜索没有发现任何有用的信息。
我故意使用单个字符标识符来匹配表达式。
我怀疑问题可能在于尝试匹配类型,因为它可能不被视为“表达式”
使用gofmt可以做到这一点吗?
不,这不可能- 因为将fmt视为模式是“表达式”,请查看http://golang.org/src/cmd/gofmt/rewrite.go parseExpr()函数。
Go规范(http://golang.org/ref/spec#Expressions)清楚地说明了什么:“表达式通过将运算符和函数应用于操作数来指定值的计算。” 因此,请转到fmt尝试将模式“ f(xt,yt)”解析为函数调用,因此它期望使用逗号或括号而不是“ t”。
您不能编写会“ func MyFunc(a int,b int)”的模式-因为它的函数定义,不是有效的go表达式