Golang reflect.FieldByName()函数及示例

Golang reflect.FieldByName()函数及示例

Go语言提供了内置的运行时反射支持,借助reflect包,允许程序操纵任意类型的对象。Golang中的 reflect.FieldByName() 函数用于获取具有给定名称的结构字段。要访问此函数,需要在程序中导入reflect包。

Syntax:

func (v Value) FieldByName(name string) Value

参数: 此函数仅接受单个参数。

  • 名称: 此参数为字符串类型。

返回值: 此函数返回具有给定名称的结构字段。

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

示例1:

// Golang程序说明
// reflect.FieldByName()函数
   
package main
   
import (
    "fmt"
    "reflect"
)
  
type Struct1 struct {
    Var1       string
    Var2       string
    Var3       float64
    Var4       float64
}
  
// 主函数
func main() {
    NewMap := make(map[string]*Struct1)
    NewMap["abc"] = &Struct1{"abc", "def", 1.0, 2.0}
    subvalMetric := "Var1"
      
    for _, Value:= range NewMap {
        s := reflect.ValueOf(&Value).Elem()
        println(s.String())
        println(s.Elem().String())
          
        // 使用FieldByName()方法
        metric := s.Elem().FieldByName(subvalMetric).Interface()
        fmt.Println(metric)
    }
      
}

输出:

<*main.Struct1 Value>
<main.Struct1 Value>
abc

示例2:

// Golang程序说明
// reflect.FieldByName()函数
   
package main
   
import (
    "fmt"
    "reflect"
)
  
// 主函数
func main() {
    type t struct {
            N int
    }
    var n = t {76}
    fmt.Println(n.N)
      
    // 使用FieldByName()方法
    reflect.ValueOf(&n).Elem().FieldByName("N").SetInt(4)
    fmt.Println(n.N)    
} 

输出:

76
4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程