Función reflect.Elem() en Golang con ejemplos

El lenguaje Go proporciona una implementación de soporte incorporada de la reflexión en tiempo de ejecución y permite que un programa manipule objetos con tipos arbitrarios con la ayuda del paquete de reflexión. La función reflect.Elem() en Golang se usa para obtener el valor que contiene la interfaz v o al que apunta el puntero v. Para acceder a esta función, es necesario importar el paquete reflect en el programa.

Sintaxis:

func (v Value) Elem() Value

Parámetros: Esta función no acepta ningún parámetro.

Valor devuelto: Esta función devuelve el valor que contiene la interfaz v.

Los siguientes ejemplos ilustran el uso del método anterior en Golang:

Ejemplo 1:

// Golang program to illustrate
// reflect.Elem() Function
  
package main
   
import (
    "fmt"
    "reflect"
       
)
type Book struct {
    Id    int   
    Title string
    Price float32
    Authors []string    
}
  
// Main function   
func main() {
    book := Book{}
  
    //use of Elem() method
    e := reflect.ValueOf(&book).Elem()
       
    for i := 0; i < e.NumField(); i++ {
        varName := e.Type().Field(i).Name
        varType := e.Type().Field(i).Type
        varValue := e.Field(i).Interface()
        fmt.Printf("%v %v %v\n", varName, varType, varValue)
    }
}        

Producción:

Id int 0
Title string 
Price float32 0
Authors []string []

Ejemplo 2:

// Golang program to illustrate
// reflect.Elem() Function
  
package main
   
import (
    "fmt"
    "reflect"
     "io"
     "os"     
)
  
// Main function   
func main() {
  
    //use of Elem() method
    writerType := reflect.TypeOf((*io.Writer)(nil)).Elem()
  
    fileType := reflect.TypeOf((*os.File)(nil))
    fmt.Println(fileType.Implements(writerType))
}     

Producción:

true

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *