go 利用反射获取指针指向的结构体
时间: 2023-12-06 08:04:56 浏览: 246
通过反射方式获取指纹信息
在 Go 语言中,可以使用反射的方式获取指针指向的结构体。示例代码如下:
```go
package main
import (
"reflect"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
// 创建结构体实例的指针
p := &Person{
Name: "Alice",
Age: 18,
}
// 获取指针指向的结构体类型
t := reflect.TypeOf(*p)
// 创建结构体实例
s := reflect.New(t).Elem().Interface()
// 将指针指向的结构体的值拷贝到新创建的结构体实例中
reflect.ValueOf(s).Elem().Set(reflect.ValueOf(*p))
// 输出结构体字段值
fmt.Println(s.(Person).Name)
fmt.Println(s.(Person).Age)
}
```
在上面的代码中,我们首先创建了一个指向 `Person` 结构体的指针 `p`,然后使用反射的方式获取指针指向的结构体类型,并创建新的结构体实例。接着,我们使用 `reflect.ValueOf` 获取指针指向的结构体的值,并将其拷贝到新创建的结构体实例中。最后可以通过新创建的结构体实例访问结构体的字段值。
阅读全文