我想創建一個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(), 等也一樣。雖然stargazer.Elem().UnsafeAddr()etc. 有效,但我看不出這如何幫助(遞回地)創建指向指標的新非零指標......
uj5u.com熱心網友回復:
使用以下代碼創建指向 中值的指標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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/373113.html
上一篇:Go映射到Json的串列
