Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang:获取字段名为字符串的基础结构_Go - Fatal编程技术网

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/;前者存在,但又是另一回事。