Golang:获取字段名为字符串的基础结构
如何获取字段名为字符串的字段的基础值 我知道我需要使用反射,但如果我这样做了,我会在我的代码中继续使用它吗?有什么方法可以断言吗 我只想得到字段的值,底层结构,在本例中是一个[]骰子Golang:获取字段名为字符串的基础结构,go,Go,如何获取字段名为字符串的字段的基础值 我知道我需要使用反射,但如果我这样做了,我会在我的代码中继续使用它吗?有什么方法可以断言吗 我只想得到字段的值,底层结构,在本例中是一个[]骰子 类型Dice结构{ 整数 } 类型SliceNDice结构{ 未知骰子 } func main(){ 结构:=SliceNDice{make([]骰子,10)} refValue:=reflect.ValueOf(&structure).Elem().FieldByName(字符串(“未知”)) slice:=r
类型Dice结构{
整数
}
类型SliceNDice结构{
未知骰子
}
func main(){
结构:=SliceNDice{make([]骰子,10)}
refValue:=reflect.ValueOf(&structure).Elem().FieldByName(字符串(“未知”))
slice:=refValue.slice(0,refValue.Len())
//无法在切片上设置范围(类型reflect.Value)
//对于i,v:=范围切片{
//fmt.Printf(“%v%v\n”,i,v.In)
//}
对于i:=0;i
如果您知道“未知”字段的类型为[]Dice,则可以使用获取基础值并使用类型断言转换它:
slice := refValue.Interface().([]Dice)
for i,v := range slice {
fmt.Printf("%v %v\n", i, v.In)
}
如果知道“未知”字段的类型为[]Dice,则可以使用获取基础值并使用类型断言进行转换:
slice := refValue.Interface().([]Dice)
for i,v := range slice {
fmt.Printf("%v %v\n", i, v.In)
}
愚蠢的细节:s/reflect.Interface/Value.Interface/;前者是存在的,但它是另一回事。愚蠢的细节:s/reflect.Interface/Value.Interface/;前者存在,但又是另一回事。