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

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
使用以下代碼創(chuàng)建指向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 關注
- 116 瀏覽
添加回答
舉報
0/150
提交
取消