我想創建一個reflect.Value代表指向最終值的多級嵌套指針的。編譯時不知道嵌套級別。如何創建指向使用指針的指針reflect?在嘗試創建指向指針的指針時,我已經遇到了“無法尋址的值”障礙。dave := "It's full of stars!"stargazer := reflect.ValueOf(&dave)stargazer = stargazer.Addr() // panic: reflect.Value.Addr of unaddressable value等相同stargazer.UnsafeAddr()。雖然 etc.stargazer.Elem().UnsafeAddr()有效,但我看不出這如何幫助(遞歸地)創建一個指向指針的新非零指針...
1 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
使用以下代碼創建指向中值的指針stargazer。
p := reflect.New(stargazer.Type())
p.Elem().Set(stargazer)
// p.Interface() is a pointer to the value stargazer.Interface()
例子:
dave := "It's full of stars!"
stargazer := reflect.ValueOf(dave)
for i := 0; i < 10; i++ {
p := reflect.New(stargazer.Type())
p.Elem().Set(stargazer)
stargazer = p
}
fmt.Printf("%T\n", stargazer.Interface()) // prints **********string
- 1 回答
- 0 關注
- 114 瀏覽
添加回答
舉報
0/150
提交
取消