>백엔드 개발 >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는 함수 호출에서 잠재적인 형식 지정 지시문을 발견할 때 경고를 생성할 수 있습니다. Println처럼요. 이 경고는 의도적으로 여러 퍼센트 기호를 인쇄하려는 경우 특히 실망스러울 수 있습니다.

다음 코드를 고려하세요.

package main

import (
    "fmt"
)

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

이 코드는 경고를 트리거합니다.

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

이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.

대체 인쇄 명령문:

동일한 출력을 얻기 위해 백분율 기호가 필요하지 않은 대체 인쇄 명령문을 사용할 수 있습니다. 예:

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

Custom 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 generate를 실행하여 규칙을 활성화하세요. 그러나 앞서 언급한 것처럼 사용자 정의 규칙을 사용하는 것은 최후의 수단으로 간주되어야 하며 일반적인 용도에서는 권장되지 않습니다.

위 내용은 Println에서 여러 퍼센트 징후에 대한 Go Vet 경고를 억제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.