📅  最后修改于: 2023-12-03 15:31:01.771000             🧑  作者: Mango
在Golang中,reflect.New()函数是一个非常重要的函数,它可以返回一个指向类型T的新零值的指针。
func New(typ Type) Value
下面是一个简单的代码片段,演示了如何使用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()函数创建一个新的结构体,并设置其字段的值。通过使用该函数,我们可以在运行时动态地创建和修改类型的值,这在某些情况下非常有用。