在golang中,反射是一种机制,它容许在程序运行时查看、摸索和批改变量。
在反射中,咱们能够应用 reflect 包的函数来读取变量的类型、值和办法。
package mainimport ( "fmt" "reflect")type Person struct { Name string Age int}func main() { var fruit = []string{"apple", "banana", "orange"} var p = Person{Name: "John", Age: 30} fmt.Println("利用反射来获取变量的类型和对应的值:") fmt.Println("Type:", reflect.TypeOf(fruit)) fmt.Println("Value:", reflect.ValueOf(fruit)) fmt.Println("------------------------------") fmt.Println("利用反射来获取变量名称:") for i := 0; i < reflect.TypeOf(&p).Elem().NumField(); i++ { fmt.Println("变量名称: ", reflect.TypeOf(&p).Elem().Field(i).Name) } fmt.Println("------------------------------") fmt.Println("利用反射来批改构造体中属性的值:") v := reflect.ValueOf(&p).Elem() v.FieldByName("Name").SetString("lewis") v.FieldByName("Age").SetInt(20) fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)}
输入后果:
利用反射来获取变量的类型和对应的值:Type: []stringValue: [apple banana orange]------------------------------利用反射来获取变量名称:变量名称: Name变量名称: Age------------------------------利用反射来批改构造体中属性的值:Name: lewis, Age: 20
原文作者:蓝色瞳仁
版权申明:转载请注明作者和链接。