1
我正在嘗試使用反射從struct
值中獲取字段。獲取子結構字段中的轉到
package main
import (
"fmt"
"reflect"
)
type Vertex struct {
X string
Y string
SubVertex SubVertex
}
type SubVertex struct {
Z string
}
func get_field(v Vertex, field string) string {
r := reflect.ValueOf(v)
f := reflect.Indirect(r).FieldByName(field)
return f.String()
}
func main() {
v := Vertex{"a", "b", SubVertex{"c"}}
fmt.Println(get_field(v, "X"))
fmt.Println(get_field(v, "Y"))
fmt.Println(get_field(v, "Z")) // Invalid Value
}
我得到無效值在第三種情況下,當我試圖讓Z
字段的值。如果SubVertex
是一個匿名字段,這將工作,但我需要使用一個命名字段。
我該如何做這項工作?
工作正常操場https://play.golang.org/p/fgnOdNRDA0 – RayfenWindspear
不適合我...... HTTPS: //play.golang.org/p/bMCKdzFe0i AB <無效值> – irom
我編輯了這個問題 - 最初是因爲工作代碼和散文中描述的一些稍微難以理解的變化一起呈現的混淆,問題。 –