Función reflect.NumField() 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.NumField() en Golang se utiliza para obtener el número de campos en la estructura v. Para acceder a esta función, es necesario importar el paquete reflect en el programa.

Sintaxis:

func (v Value) NumField() int

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

Valor devuelto: esta función devuelve el número de campos en la estructura v.

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

Ejemplo 1:

// Golang program to illustrate
// reflect.NumField() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
   
// Main function
func main() {
   
    // use of StructOf method
    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()) 
   
}

Producción:

2

Ejemplo 2:

// Golang program to illustrate
// reflect.NumField() 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

Deja una respuesta

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