Función reflect.Tag.Lookup() 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.Tag.Lookup() en Golang se usa para encontrar el valor asociado con la clave en la string de la etiqueta, se devuelve una string vacía si no hay tal clave en la etiqueta y para determinar si una etiqueta se establece explícitamente en el cuerda vacía. Para acceder a esta función, es necesario importar el paquete reflect en el programa.

Sintaxis:

func (tag StructTag) Lookup(key string) (value string, ok bool)

Parámetros: esta función toma dos parámetros de tipo string (valor) y tipo bool (ok).

Valor de retorno: esta función devuelve el valor asociado con la clave en la string de etiquetas y el valor se estableció explícitamente.

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

Ejemplo 1:

// Golang program to illustrate
// reflect.Tag.Lookup() Function 
  
package main
  
import (
    "fmt"
    "reflect"
)
  
// Main function 
func main() {
    type S struct {
        F0 string `val:"123456"`
        F1 string `val:""`
        F2 string
    }
  
    s := S{}
    st := reflect.TypeOf(s)
    for i := 0; i < st.NumField(); i++ {
        field := st.Field(i)
          
        // use of Lookup method
        if value, ok := field.Tag.Lookup("val"); ok {
            if value == "" {
                fmt.Println("(Empty)")
            } else {
                fmt.Println(value)
            }
        } else {
            fmt.Println("(Non specific)")
        }
    }    
}

Producción:

123456
(Empty)
(Non specific)

Ejemplo 2:

// Golang program to illustrate
// reflect.Tag.Lookup() Function 
  
package main
  
import (
    "fmt"
    "reflect"
    "strconv"
)
  
type Temp struct {
    ID string `auto_increment:"true" increment:"1"`
    Name string `varchar: "255"`
    Surname string `"varchar: "255"`
}
  
// Main function 
func main() {
    v:= Temp{}
    // c variable represents table columns
    c := reflect.TypeOf(v).Field(0).Tag
      
    // g variable represents get
    g := c.Get("increment")
    fmt.Printf("Get method: %s\n", g)
      
    val, ok := c.Lookup("auto_increments")
    fmt.Printf("Lookup method: %s- %s", val, strconv.FormatBool(ok))    
}

Producción:

Get method: 1
Lookup method: - false

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 *