1 回答

TA贡献1824条经验 获得超8个赞
此代码只是您尝试的内容的回顾,并且有效
package main
import (
"fmt"
"reflect"
"strings"
)
type Vehicle struct {
Manufacturer Manufacturer
VehicleNumber string
}
type Manufacturer struct {
ManufacturerName string
}
func exportValueFromField(data interface{}, index string) string {
indexArray := strings.Split(index, ".")
r := reflect.ValueOf(data)
for _, i := range indexArray {
if r.FieldByName(i).Kind() == reflect.Struct {
r = reflect.ValueOf(r.FieldByName(i).Interface())
} else {
r = r.FieldByName(i)
}
}
return fmt.Sprintf("%v", r)
}
func main() {
var vehicle = Vehicle{
Manufacturer: Manufacturer{
ManufacturerName: "hello",
},
}
value := exportValueFromField(vehicle, "Manufacturer.ManufacturerName")
fmt.Println(value)
}
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报