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.Field() en Golang se usa para obtener el i-ésimo campo de la estructura v. Para acceder a esta función, es necesario importar el paquete reflect en el programa.
Sintaxis:
func (v Value) Field(i int) ValueParámetros: Esta función no acepta ningún parámetro.
Valor de retorno: esta función devuelve el i-ésimo campo de la estructura v.
Los siguientes ejemplos ilustran el uso del método anterior en Golang:
Ejemplo 1:
// Golang program to illustrate // reflect.Field() Function package main import ( "fmt" "reflect" ) // Main function func main() { tt:= reflect.StructOf([]reflect.StructField{ { Name: "Height", Type: reflect.TypeOf(0.0), Tag: `json:"height"`, }, { Name: "Name", Type: reflect.TypeOf("abc"), Tag: `json:"name"`, }, }) fmt.Println(tt.NumField()) //use of Field() method fmt.Println(tt.Field(0)) fmt.Println(tt.Field(1)) }
Producción:
2 {Height float64 json:"height" 0 [0] false} {Name string json:"name" 8 [1] false}
Ejemplo 2:
// Golang program to illustrate // reflect.Field() Function package main import ( "fmt" "reflect" ) type temp struct { ord int cId int } // function to use the // Field() method func useKind(val interface{}) { // Kind() function is used // to find the kind if reflect.ValueOf(val ).Kind() == reflect.Struct { v := reflect.ValueOf(val ) fmt.Println("Number of fields", v.NumField()) for i := 0; i < v.NumField(); i++ { fmt.Printf("Field: %d \t type: %T \t value: %v\n", i, v.Field(i), v.Field(i)) } } } // Main function func main() { val := temp { ord: 1, cId: 513, } useKind(val) }
Producción:
Number of fields 2 Field: 0 type: reflect.Value value: 1 Field: 1 type: reflect.Value value: 513
Publicación traducida automáticamente
Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA