Println で複数のパーセント記号に対する Go Vet の警告を抑制する方法
Go vet は、関数呼び出しで潜在的な書式設定ディレクティブに遭遇したときに警告を生成できますプリントインのように。この警告は、意図的に複数のパーセント記号を印刷したい場合に特にイライラする可能性があります。
次のコードを考えてみましょう:
package main import ( "fmt" ) func main() { fmt.Println("%%dude") }
このコードは警告をトリガーします:
./prog.go:8:2: Println call has possible formatting directive %d
この問題に対処するには、2 つのオプションがあります:
代替印刷ステートメント:
パーセント記号を必要としない代替の print ステートメントを使用して、同じ出力を実現できます。例:
fmt.Println("%" + "dude") fmt.Println("%\x25dude") fmt.Printf("%%%%dude\n") s := "%%dude" fmt.Println(s)
カスタム Go Vet ルール:
推奨されていませんが、独自のカスタム Go Vet ルールを定義することで、この特定の警告を抑制できます。ただし、コードをビルドする他のユーザーに一貫性のない動作や予期しない動作を引き起こす可能性があるため、このアプローチは推奨されません。
カスタム Go vet ルールを作成するには、通常はcustom_rules.go という名前の新しいファイルを定義できます。それを編集して、次の内容を含めます:
package govetrules import ( "github.com/golangci/go-criticisms" ) func init() { criticisms.Register("suppress-fmt-percent-warning", criticisms.Rule{ Description: "Suppresses the warning for Println calls with multiple percent signs", Validator: func(ctx *criticisms.Context, node ast.Node, s string) { // Disable the warning for Println calls with at least two consecutive percent signs if call, ok := node.(*ast.CallExpr); ok && call.Fun.Name == "Println" { args := call.Args if len(args) >= 2 && args[0].String() == "\"\"" && args[1].String() == "\"\"" { ctx.SetResult(criticisms.Invalid) } } }, }) }
このファイルをプロジェクト ディレクトリに配置し、 go generated を実行してルールをアクティブにします。ただし、前述したように、カスタム ルールの使用は最後の手段として考慮する必要があり、一般的な使用はお勧めできません。
以上がPrintln の複数のパーセント記号に関する Go Vet 警告を抑制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。