📜  Golang 中的reflect.New()函数示例(1)

📅  最后修改于: 2023-12-03 15:31:01.771000             🧑  作者: Mango

Golang 中的reflect.New()函数示例

在Golang中,reflect.New()函数是一个非常重要的函数,它可以返回一个指向类型T的新零值的指针。

语法
func New(typ Type) Value
参数
  • typ:要创建的类型。
返回值
  • Value:指向类型T的新零值的指针。
示例

下面是一个简单的代码片段,演示了如何使用reflect.New()函数创建一个新的结构体并设置其字段的值。

package main

import (
    "fmt"
    "reflect"
)

type Person struct {
    Name string
    Age int
}

func main() {
    pType := reflect.TypeOf(Person{})
    pValue := reflect.New(pType).Elem()

    pValue.FieldByName("Name").SetString("Alice")
    pValue.FieldByName("Age").SetInt(28)

    p := pValue.Interface().(Person)
    fmt.Println(p)
}

在上面的代码中,我们首先使用reflect.TypeOf()函数获取Person结构体的类型,并将其保存在pType变量中。然后,我们使用reflect.New()函数创建一个指向该类型的新零值的指针,并将其保存在pValue变量中。

接下来,我们使用pValue.FieldByName()函数来获取名为Name和Age的结构体字段,并设置它们的值。最后,我们使用pValue.Interface()函数将pValue转换为一个普通的Person对象,并打印该对象。

运行上面的代码,输出结果如下:

{Alice 28}

上面的示例演示了如何使用reflect.New()函数创建一个新的结构体,并设置其字段的值。通过使用该函数,我们可以在运行时动态地创建和修改类型的值,这在某些情况下非常有用。