"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 puedo realizar la afirmación de tipo en un resultado go `reflej.typeF ()`?

¿Cómo puedo realizar la afirmación de tipo en un resultado go `reflej.typeF ()`?

Publicado el 2025-03-23
Navegar:806

How Can I Perform Type Assertion on a Go `reflect.TypeOf()` Result?

type Asserion usando reflej.typeF () in go

en Go, cuando se trabaja con interfaces, puede ser necesario realizar una aserción de tipo para obtener el tipo de concreto subyacente. La pregunta surge sobre cómo lanzar un tipo (devuelto por reflej.typeF ()) a un tipo específico para la afirmación.

problema:

considere el código de ejemplo:

func IdentifyItemType(name string) interface{} {
    var item interface{}
    switch name {
    default:
        item = Article{}
    }
    return item
}

aquí, nuestro objetivo es identificar una estructura (artículo) basada en un nombre de cadena. Sin embargo, el tipo de aserción requiere un tipo, pero refleje.typeF () devuelve un tipo.

SOLUCIÓN:

Si el objetivo es encender el tipo de la interfaz exterior {}, la reflexión no es necesaria:

switch x.(type){
  case int: 
    dosomething()
}

Sin embargo, para encender el tipo de atributos dentro de una interfaz, se puede emplear la reflexión:

s := reflect.ValueOf(x)
for i:=0; i 

Esto permite el cambio de tipos en los atributos de la interfaz. Si bien no es una solución elegante, proporciona funcionalidad hasta que se descubra una mejor alternativa.

Ú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