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.
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