"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 > ¿Por qué aparece \"interfaz sin métodos\" cuando accedo a una estructura anónima en Go?

¿Por qué aparece \"interfaz sin métodos\" cuando accedo a una estructura anónima en Go?

Publicado el 2024-11-22
Navegar:292

Why do I get \

Comprensión de "interfaz sin métodos" en Go

En su código, encontró el error "tipo interfaz {} es una interfaz sin métodos" al intentar acceder a un campo desde una estructura anónima pasada a una función. Para comprender este error, es esencial comprender el concepto de interfaces en Go.

Una interfaz en Go es un tipo que define un conjunto de métodos que un tipo concreto debe implementar. Sin embargo, en su caso, la interfaz que está utilizando es una "interfaz vacía" indicada por interfaz {}. Una interfaz vacía no tiene ningún método y puede contener valores de cualquier tipo, lo que la convierte en un tipo universal.

Acceder al campo de estructura anónima

Para acceder a los campos de la estructura anónima pasada a NewJob, debe escribirla en un tipo compatible antes de poder acceder a sus campos. La aserción de tipo le permite convertir la interfaz vacía a un tipo concreto específico.

El código corregido

id := v.(struct{Id int}).Id

En este código corregido, escribimos afirmar la interfaz v en una estructura con un campo Id. Esto nos permite acceder al campo Id y el programa se ejecutará como se esperaba.

Recuerde que la aserción de tipo debe usarse con prudencia, ya que puede provocar errores de tiempo de ejecución si la aserción de tipo falla.

Ú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