簡體   English   中英

使用reflect,如何初始化struct指針字段的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM