"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo pasar argumentos variables a `fmt.Sprintf` en una implementación personalizada de `errors.New`?

¿Cómo pasar argumentos variables a `fmt.Sprintf` en una implementación personalizada de `errors.New`?

Publicado el 2024-11-09
Navegar:916

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

Cómo implementar una versión de errores.Nueva que acepta los mismos parámetros que fmt.Sprintf

Para implementar una versión de errores.Nueva que acepta los mismos parámetros que fmt.Sprintf, se puede usar la función NewError, que se define de la siguiente manera:

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

Sin embargo, esta función no funciona correctamente porque el número variable de argumentos en a se convierte en un único parámetro de matriz en NewError, lo que hace que Sprintf complete solo un único parámetro en la cadena de formato.

]Para solucionar este problema, el parámetro final en NewError debe marcarse como un número variable de argumentos con la sintaxis...:

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

Esto permite que fmt.Sprintf interprete un número variable de argumentos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3