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) ValuePará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