我正在试验基于此go重构blog post代码的gofmt
工具功能,我有一个简单的例子:
package main
import (
"fmt"
)
var v = 12
func main() {
fmt.Println(v)
}
我正在尝试重命名 v
变量到m
应用此配方:
gofmt -r 'v -> m' -w main.go
重构后的代码看起来(破碎)如:
package m
import (
"fmt"
)
var m = m
func m() {
m
}
我在这里缺少什么?
答案 0 :(得分:16)
您正在尝试的内容存在问题,gofmt manual states:
使用-r标志指定的重写规则必须是以下形式的字符串:
pattern -> replacement
模式和替换都必须是有效的Go表达式。在模式中,单字符小写>标识符用作匹配任意子表达式的通配符;这些表达式将替换替换中的相同标识符。
(突出显示已添加)
如果您有var vee = 12
并使用-r vee -> foo
,一切都会好的。但是v -> m
,
v -> m
匹配每个Go表达式,将其标识为v
并将其替换为m
。