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

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

Susan Sarandon
リリース: 2024-12-14 21:06:23
オリジナル
203 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート