在Go語言中,可以使用reflect.New()
函數來實例化一個指定類型的對象。reflect.New()
函數接受一個reflect.Type
參數,返回一個指向該類型的新分配的零值的指針。
以下是一個使用反射實例化對象的示例:
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func main() {
pType := reflect.TypeOf(Person{})
pValue := reflect.New(pType)
p := pValue.Interface().(*Person)
p.Name = "Alice"
p.Age = 25
fmt.Println(p)
}
在上面的示例中,首先使用reflect.TypeOf()
函數獲取Person
類型的反射對象。然后使用reflect.New()
函數傳入反射對象,返回一個指向Person
類型的新分配的零值的指針。最后使用Interface()
方法將反射值轉換為接口值,并通過類型斷言將其轉換為*Person
類型的指針。
輸出結果為:
&{Alice 25}
這樣就通過反射實例化了一個Person
類型的對象。