Предположительно gofmt
работает как его авторов предназначены, которые могут быть разными от того, что вы ожидали. documentation говорит:
Обе модели и замена должны быть корректными выражениями Go. В шаблоне односимвольные строчные идентификаторы служат в качестве подстановочных знаков, соответствующих произвольным подвыражениям; эти выражения будут заменены теми же идентификаторами в замене.
Как у вас есть только один строчная буква в шаблоне, она соответствует всему подвыражению. А затем заменяет их 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
}
}
Если это не то, что вы хотите, то вы должны использовать более конкретное выражение шаблона ,