如何使用反射读取指向切片的指针的值?

问题描述 投票:1回答:1
package main

import (
    "fmt"
    "reflect"
)

func main() {

    type tu struct {
        N int
    }

    type t struct {
        ARRAY []tu
        NESTED *tu
        NESTED_ARRAY []*tu
    }

    var n = t{[]tu{{4}}, &tu{5}, []*tu{{6}}}

    //print value
    fmt.Printf("value2: %v\n", reflect.ValueOf(&n).Elem().Field(1).Slice(0, 1))
    fmt.Printf("value3: %v\n", reflect.ValueOf(&n).Elem().Field(2).Elem().Field(0))
    fmt.Printf("value4: %v\n", reflect.ValueOf(&n).Elem().Field(3).Slice(0, 1).Elem().Field(0))

    return
}

我正在尝试使用反射访问数组指针的值。

reflect.ValueOf(&n).Elem().Field(3).Slice(0, 1).Elem().Field(0)应该可以,但不能。

我应该怎么做?

pointers go slice reflect
1个回答
0
投票
字段索引以0开头,而不是1。因此,将所有索引减少1。
© www.soinside.com 2019 - 2024. All rights reserved.