ホームページ >バックエンド開発 >Golang >Println の複数のパーセント記号に関する Go Vet 警告を抑制するにはどうすればよいですか?

Println の複数のパーセント記号に関する Go Vet 警告を抑制するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-14 21:06:23206ブラウズ

How to Suppress Go Vet Warnings About Multiple Percent Signs in Println?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。