亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當存儲在指針內時,切片的“reflect.Kind()”變為“Struct”

當存儲在指針內時,切片的“reflect.Kind()”變為“Struct”

Go
qq_花開花謝_0 2023-08-07 18:59:03
檢查reflect.Kind()切片的 時,如果未存儲在指針內,reflect則正確將其識別為 a :slicepackage mainimport (    "fmt"    "reflect")type Dog struct {    Name string    Age  int}func main() {    var dogs []Dog    rDogs := reflect.ValueOf(dogs)    fmt.Println(rDogs.Kind())}輸出:slice但是,當切片存儲在指針內時,reflect.Kind()將其標識為struct:package mainimport (    "fmt"    "reflect")type Dog struct {    Name string    Age  int}func main() {    dogs1 := make([]Dog, 0)    pointer := &dogs1    printPointerValueKind(pointer)            var dogs2 []Dog    pointer = &dogs2    printPointerValueKind(pointer)}func printPointerValueKind(pointer interface{}) {    if pointer != nil {        rPointer := reflect.ValueOf(pointer)        if rPointer.Kind() == reflect.Ptr {            value := rPointer.Elem()            rValue := reflect.ValueOf(value)            fmt.Println(rValue.Kind())        }    }}       輸出:structstruct我的問題是:為什么會出現這種情況?有沒有一種方法可以將切片存儲在指針內,并且仍然將reflect.Kind()其標識為 a slice?
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

1?.?(reflect.Value).Elem()返回 a?reflect.Value,它一個結構體,如果您正在查找該值所持有的類型,則不需要再次傳遞給它。reflect.ValueOf

2?.?rPointer.Elem().Kind()應該足以滿足你的需要。


查看完整回答
反對 回復 2023-08-07
  • 1 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號