[英]Using reflect, how do you initialize value of a struct pointer field?
package main
import (
"fmt"
"reflect"
)
type A struct {
D *int
}
func main() {
a := &A{}
v := reflect.ValueOf(a)
e := v.Elem()
f := e.Field(0)
z := reflect.Zero(f.Type().Elem())
f.Set(z)
fmt.Println(z)
}
panic:reflect.Set:int類型的值不能賦值為* int
如何將* D設置為默認值使用反射
你需要有一個指針值(* int),但是reflect
文檔說明了func Zero(typ Type) Value
:
返回的值既不可尋址也不可設置。
在您的情況下,您可以改為使用New
:
z := reflect.New(f.Type().Elem())
試試這個
var i int
f.Set(reflect.ValueOf(&i))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.