"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como passar argumentos variáveis ​​para `fmt.Sprintf` em uma implementação personalizada `errors.New`?

Como passar argumentos variáveis ​​para `fmt.Sprintf` em uma implementação personalizada `errors.New`?

Publicado em 2024-11-09
Navegar:916

How to Pass Variable Arguments to `fmt.Sprintf` in a Custom `errors.New` Implementation?

Como implementar uma versão de erros.Novo que aceita os mesmos parâmetros que fmt.Sprintf

Para implementar uma versão de erros.Novo que aceita os mesmos parâmetros que fmt.Sprintf, pode-se usar a função NewError, que é definida da seguinte forma:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}

No entanto, esta função não funciona corretamente porque o número variável de argumentos em a se torna um único parâmetro de array em NewError, fazendo com que o Sprintf preencha apenas um único parâmetro na string de formato.

Para corrigir esse problema, o parâmetro final em NewError deve ser marcado como um número variável de argumentos com a ... sintaxe:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}

Isso permite que fmt.Sprintf interprete a como um número variável de argumentos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3