我想我的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
    }
}

如果这不是您想要的,则应使用更具体的模式表达式。

10-07 15:13