如果您有类似于: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能做到这一点吗?
发布于 2014-04-04 19:20:32
不,这是不可能的-因为go fmt将patter作为“表达式”,查看http://golang.org/src/cmd/gofmt/rewrite.go parseExpr()函数。
Go规范(http://golang.org/ref/spec#Expressions)清楚地说明了“表达式通过将运算符和函数应用于操作数来指定值的计算”。因此,fmt尝试将模式“f( it,it)”解析为函数调用,而不是"t“,它需要逗号或括号。
您不能编写许多"func MyFunc(a int,b int)“的模式,因为它的函数定义,不是一个有效的go表达式。
https://stackoverflow.com/questions/22869017
复制相似问题