Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menyekat Amaran Go Vet Mengenai Tanda Berbilang Peratus dalam Println?

Bagaimana untuk menyekat Amaran Go Vet Mengenai Tanda Berbilang Peratus dalam Println?

Susan Sarandon
Susan Sarandonasal
2024-12-14 21:06:23204semak imbas

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

Cara Menekan Amaran Go Vet untuk Tanda Berbilang Peratus dalam Println

Go vet boleh menjana amaran apabila ia menemui arahan pemformatan yang berpotensi dalam panggilan fungsi seperti Println. Amaran ini boleh menjadi sangat mengecewakan apabila anda sengaja ingin mencetak tanda berbilang peratus.

Pertimbangkan kod berikut:

package main

import (
    "fmt"
)

func main() {
    fmt.Println("%%dude")
}

Kod ini mencetuskan amaran:

./prog.go:8:2: Println call has possible formatting directive %d

Untuk menangani isu ini, anda mempunyai dua pilihan:

Cetakan Alternatif Penyata:

Anda boleh menggunakan pernyataan cetakan alternatif yang tidak memerlukan tanda peratus untuk mencapai output yang sama. Contohnya:

fmt.Println("%" + "dude")
fmt.Println("%\x25dude")
fmt.Printf("%%%%dude\n")
s := "%%dude"
fmt.Println(s)

Peraturan Go Vet Tersuai:

Walaupun tidak disyorkan, anda boleh menyekat amaran khusus ini dengan menentukan peraturan doktor haiwan Go tersuai anda sendiri. Walau bagaimanapun, pendekatan ini tidak digalakkan kerana ia boleh membawa kepada tingkah laku yang tidak konsisten atau tidak dijangka bagi pengguna lain yang membina kod anda.

Untuk mencipta peraturan Go vet tersuai, anda boleh menentukan fail baharu, biasanya dinamakan custom_rules.go, dan editnya untuk memasukkan kandungan berikut:

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)
                }
            }
        },
    })
}

Letakkan fail ini dalam direktori projek anda dan jalankan go generate untuk mengaktifkan peraturan. Walau bagaimanapun, seperti yang dinyatakan sebelum ini, menggunakan peraturan tersuai harus dianggap sebagai pilihan terakhir dan tidak disyorkan untuk kegunaan umum.

Atas ialah kandungan terperinci Bagaimana untuk menyekat Amaran Go Vet Mengenai Tanda Berbilang Peratus dalam Println?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn