reflect.New
时间: 2023-08-01 22:13:25 浏览: 167
在 Go 中,使用 `reflect.New` 函数可以创建一个指向类型零值的指针。它的函数签名如下:
```go
func New(typ Type) Value
```
其中,`typ` 是要创建的指针类型,返回值是一个 `Value`,它持有一个指向新值的指针。
示例代码如下:
```go
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
// 创建一个指向 Person 的指针类型
ptrType := reflect.TypeOf(&Person{})
// 使用 reflect.New 创建一个指向 Person 的零值的指针
ptrValue := reflect.New(ptrType)
// 将 ptrValue 转换为指针类型,并打印出来
ptr := ptrValue.Interface().(*Person)
fmt.Printf("%p\n", ptr)
}
```
在上面的代码中,我们首先使用 `reflect.TypeOf` 获取 `Person` 的指针类型,然后使用 `reflect.New` 创建一个指向 `Person` 零值的指针。最后,我们将 `ptrValue` 转换为指针类型,并打印出来。
需要注意的是,`reflect.New` 只能用于创建指针类型的新值,如果要创建非指针类型的新值,可以使用 `reflect.Zero` 函数。