go 使用gofmt重构工具重命名全局变量
我正在试验用于重构代码的go 使用gofmt重构工具重命名全局变量,go,go,refactoring,go,Go,Refactoring,我正在试验用于重构代码的gofmt工具功能,基于此,我有一个简单的例子: package main import ( "fmt" ) var v = 12 func main() { fmt.Println(v) } 我正在尝试将v变量重命名为m应用此配方: gofmt -r 'v -> m' -w main.go 重构后的代码看起来(不完整)如下: 我在这里遗漏了什么?您正在尝试的内容有一个问题,即: 使用-r标志指定的重写规则必须是以下格式的字符串: patt
gofmt
工具功能,基于此,我有一个简单的例子:
package main
import (
"fmt"
)
var v = 12
func main() {
fmt.Println(v)
}
我正在尝试将v
变量重命名为m
应用此配方:
gofmt -r 'v -> m' -w main.go
重构后的代码看起来(不完整)如下:
我在这里遗漏了什么?您正在尝试的内容有一个问题,即: 使用-r标志指定的重写规则必须是以下格式的字符串:
pattern->replacement
pattern和replacement都必须是有效的Go表达式。在模式中,单字符小写>标识符用作通配符匹配任意子表达式;这些表达式将在替换中替换为相同的标识符
(加亮显示)
如果您有var-vee=12
并使用-r-vee->foo
一切都会很好。但是,使用v->m
,
v->m
匹配每个Go表达式,将其标识为v
,并将其替换为m
Huh。为什么使用单字符小写标识符来匹配“任意子表达式”很有用?(或者这是另一个问题…@Matt直接从doc中取了一个例子:(a)->a
,删除表达式周围不必要的括号。啊,我明白了。因此,它不仅可以用于重构变量,还可以用于清理语法。谢谢
package m
import (
"fmt"
)
var m = m
func m() {
m
}