发布时间:2024-12-22 17:32:13
type Person struct { Name string } func (p *Person) ModifyName(newName string) { p.Name = newName }
在这个例子中,ModifyName 方法可以直接通过指针来修改Person对象的Name字段的值。p := &Person{Name: "Alice"} reflectValue := reflect.ValueOf(p) // 获取指针类型的反射值 actualValue := reflectValue.Elem() // 获取指针指向的实际值 nameField := actualValue.FieldByName("Name") fmt.Println(nameField.String()) // 输出:"Alice"
在这个示例中,我们首先通过reflect.ValueOf()函数获取指针类型的反射值。然后,我们使用Elem()方法获取指针指向的实际值。接下来,我们可以使用FieldByName()方法来获取该实际值的字段,并使用String()方法获取字段的字符串值。参考资料: - The Go Programming Language Specification: https://golang.org/ref/spec - The Go Blog: Laws of Reflection: https://blog.golang.org/laws-of-reflection