首页 > 应用开发 > Go语言 > go语言中reflection作用及用法
1.
获取反射对象:使用
reflect.ValueOf()函数可以获取任意值的反射对象(
reflect.Value)。
2. 通过反射读取值:通过反射对象,可以读取其对应的实际值。
3. 通过反射修改值:如果反射对象是可寻址的,并且值是可导出的(即首字母大写),那么可以通过反射对象修改其对应的实际值。
4. 通过反射调用方法:可以使用反射调用对象的方法。
goCopy Codepackage mainimport ( "fmt"
"reflect")type MyStruct struct {
Field1 string
Field2 int}func (m MyStruct) MyMethod() {
fmt.Println("Hello from MyMethod!")
}func main() {
ms := MyStruct{"Hello", 10} // 获取反射对象
valueOfMs := reflect.ValueOf(ms) // 读取字段
field1 := valueOfMs.FieldByName("Field1").String()
fmt.Println("Field1:", field1) // 修改字段(注意:需要先使用ValueOf的指针,且字段可导出)
valueOfMsPtr := reflect.ValueOf(&ms).Elem()
valueOfMsPtr.FieldByName("Field2").SetInt(20)
fmt.Println("Field2:", ms.Field2) // 调用方法
valueOfMs.MethodByName("MyMethod").Call(nil)
}
反射是Go语言的一个强大特性,但也需要谨慎使用,避免过度依赖反射导致代码难以理解和维护。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040412/viewspace-3025315/ ,如需转载,请注明出处,否则将追究法律责任。