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
极客教程