我想我的gofmt
无法正常工作,对吗?
原始文件:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
然后我做了:
gofmt -r 'h -> H' -w "hello.go"
之后的文件内容:
package H
import "fmt"
func H() {
H
}
最佳答案
大概gofmt
可以按其作者的预期工作,可能与您的预期有所不同。
documentation说:
由于模式中只有一个小写字母,因此它匹配所有子表达式。然后用H
替换它们。让我们进一步举例,考虑一下:
package main
import "fmt"
func compare(a, b int) {
if a + b < a * b {
fmt.Printf("hello, world\n")
}
}
使用相同的
gofmt
命令后,以上代码变为:package H
import "fmt"
func H(H, H H) {
if H+H < H*H {
H
}
}
如果这不是您想要的,则应使用更具体的模式表达式。