Golang reflect.Tag.Lookup()函数的使用及示例

Golang reflect.Tag.Lookup()函数的使用及示例

Go语言提供了内置支持的运行时反射实现,使得程序能够通过reflect包操作具有任意类型的对象。在Golang中, reflect.Tag.Lookup() 函数用于查找与标签字符串中的键相关联的值。如果标记中没有这样的键,则返回一个空字符串,以确定标记是否显式设置为空字符串。要访问此函数,需要在程序中导入reflect包。

语法:

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

参数: 此函数带有两个字符串类型(value)和布尔类型(ok)的参数。

返回值: 此函数返回与标记字符串中的键相关联的值和该值已明确设置。

下面的例子说明了上述方法在Golang中的使用:

示例 1:

// Golang程序,演示
// reflect.Tag.Lookup()函数
  
package main
  
import (
    "fmt"
    "reflect"
)
  
// 主函数  
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)
          
        // 处理Lookup函数
        if value, ok := field.Tag.Lookup("val"); ok {
            if value == "" {
                fmt.Println("(空)")
            } else {
                fmt.Println(value)
            }
        } else {
            fmt.Println("(未指明的)")
        }
    }    
} 

输出:

123456
(空)
(未指明的)

示例2:

// Golang程序,演示
// reflect.Tag.Lookup()函数
 
package main
 
import (
    "fmt"
    "reflect"
    "strconv"
)
 
type Temp struct {
    ID string `auto_increment:"true" increment:"1"`
    Name string `varchar: "255"`
    Surname string `"varchar: "255"`
}
 
// 主函数
func main() {
    v:= Temp{}
    // c 变量表示表列
    c := reflect.TypeOf(v).Field(0).Tag
      
    // g变量表示获取
    g := c.Get("increment")
    fmt.Printf("Get 方法:%s\n", g)
      
    val, ok := c.Lookup("auto_increments")
    fmt.Printf("Lookup 方法:%s- %s", val, strconv.FormatBool(ok))    
} 

输出:

Get 方法: 1
Lookup 方法: - false

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程