go 获取指针背后的结构体
时间: 2023-09-26 08:09:41 浏览: 50
在 Go 中,可以使用反射来获取指针背后的结构体。具体来说,您可以使用 reflect 包中的 TypeOf 和 ValueOf 方法来获取值的类型和值的 reflect.Value 对象。然后,您可以使用 reflect.Value 中的 Elem 方法获取指向的元素,并使用 Interface 方法将其转换为原始类型。
下面是一个示例代码,演示如何获取指针背后的结构体:
```go
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
p := &Person{Name: "Tom", Age: 30}
v := reflect.ValueOf(p)
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
fmt.Println(v.Type()) // 输出:main.Person
fmt.Println(v.Interface()) // 输出:{Tom 30}
}
```
在这个示例中,我们创建了一个名为 Person 的结构体,并使用 & 运算符创建了一个指向该结构体的指针 p。我们然后使用 reflect.ValueOf 方法获取 p 的 reflect.Value 对象。由于 p 是一个指针,所以我们使用 Kind 方法检查其是否为指针,并使用 Elem 方法获取指向的元素。最后,我们使用 Type 和 Interface 方法分别获取值的类型和原始值。
希望这个示例能够帮助您了解如何在 Go 中获取指针背后的结构体。