gpt4 book ai didi

go - 如何使用反射获取 slice 数据?

转载 作者:数据小太阳 更新时间:2023-10-29 03:45:39 24 4
gpt4 key购买 nike

package main

import (
"fmt"
"reflect"
)

//AuthRequest struct
type AuthRequest struct {
Id int64
}

func main() {
//AuthRequest auth1
auth1 := AuthRequest{
Id : 1111,
}
//Authrequest auth2
auth2 := AuthRequest{
Id : 2222,
}

//create slice
var sliceModel = make([]AuthRequest, 0)

//put element to slice
sliceModel = append(sliceModel, auth1)
sliceModel = append(sliceModel, auth2)

//Pointer to an array
model := &sliceModel

//How do I get the struct Id field here?
v := reflect.ValueOf(model).Elem()
for j := 0; j < v.NumField(); j++ {
f := v.Field(j)
n := v.Type().Field(j).Name
t := f.Type().Name()
fmt.Printf("Name: %s Kind: %s Type: %s\n", n, f.Kind(), t)
}
}

当我执行上面的代码时,出现以下错误。

panic :反射(reflect):在 slice 值上调用 reflect.Value.NumField [已恢复]

如何使用反射遍历slice获取struct AuthRequest中Id字段的值?

最佳答案

来自 the docs :

NumField returns the number of fields in the struct v. It panics if v's Kind is not Struct.

由于您的输入是一个 slice ,而不是一个结构,NumField 应该会崩溃。

您可能需要 Slice方法。

关于go - 如何使用反射获取 slice 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49624365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com