Función reflect.New() 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 reflect. La función reflect.New() en Golang se usa para obtener el Valor que representa un puntero a un nuevo cero valor para el tipo especificado. Para acceder a esta función, es necesario importar el paquete reflect en el programa.

Sintaxis:

func New(typ Type) Value

Parámetros: Esta función toma los siguientes parámetros:

  • typ : Este parámetro es el Tipo.

Valor de retorno: esta función devuelve un valor que representa un puntero a un nuevo valor cero para el tipo especificado.

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

// Golang program to illustrate
// reflect.New() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
   
// Main function 
func main() {
    t := reflect.TypeOf(5)
       
    //use of ArrayOf method
    arr := reflect.ArrayOf(4, t)
    inst := reflect.New(arr).Interface().(*[4]int)
   
    for i := 1; i <= 4; i++ {
        inst[i-1] = i*i
    }
   
    fmt.Println(inst)
}

Producción:

&[1 4 9 16]

Ejemplo 2:

// Golang program to illustrate
// reflect.New() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
    
type Geek struct {
    A int `tag1:"First Tag" tag2:"Second Tag"`
    B string
}
  
// Main function
func main() {
    greeting := "GeeksforGeeks"
    f := Geek{A: 10, B: "Number"}
  
    gVal := reflect.ValueOf(greeting)
  
    fmt.Println(gVal.Interface())
  
    gpVal := reflect.ValueOf(&greeting)
    gpVal.Elem().SetString("Articles")
    fmt.Println(greeting)
  
    fType := reflect.TypeOf(f)
    fVal := reflect.New(fType)
    fVal.Elem().Field(0).SetInt(20)
    fVal.Elem().Field(1).SetString("Number")
    f2 := fVal.Elem().Interface().(Geek)
    fmt.Printf("%+v, %d, %s\n", f2, f2.A, f2.B)
}

Producción:

GeeksforGeeks
Articles
{A:20 B:Number}, 20, Number

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 *