2017-02-05 6 views
2

私はgofmtがどうしたらいいのかと思っていますが、そうですか?私のgofmtがうまく動作しないのですか、何か分かりませんか?

オリジナルファイル:

gofmt -r 'h -> H' -w "hello.go" 

ファイルの内容の後に:私でしたその後

package main 


import "fmt" 


func main() { 
    fmt.Printf("hello, world\n") 
} 

その作者としておそらくgofmt作品は意図

package H 


import "fmt" 


func H() { 
H 
} 

答えて

5

、異なる可能性がありますあなたが期待したものから。 documentationさんのコメント:

有効なGo式でなければなりません。このパターンでは、1文字の小文字の識別子は、任意の部分式に一致するワイルドカードとして機能します。それらの表現は、置き換え中の同じ識別子に置き換えられます。

パターン内に小文字が1つしかないため、はすべての部分式と一致します。そして、それらを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 
    } 
} 

を、これはあなたが望むものではない場合は、より具体的なパターン式を使用する必要があります。

関連する問題